2,500개 단지 · 2026-09-18 기준
아파트 실거래가 지도 국토부 신고 기준 실제 거래가입니다. 호가가 아닙니다. 최근 거래일 2026-09-18.
기준월 2026-08 · 2026-09은 신고 진행 중이라 통계에서 제외
전국 중위 평당가
1,673만원
▼ 2.0% 전월 대비
거래 30,554건 · 3개월 +3.0%
수도권 중위 평당가
2,368만원
▼ 2.3% 전월 대비
거래 15,543건 · 3개월 +3.3%
서울 중위 평당가
4,217만원
▼ 2.6% 전월 대비
거래 3,173건 · 3개월 +4.1%
지도
지역 시세
상승·하락
추이·면적
전세가율
지역 시세
전국
수도권만
행을 누르면 한 단계 더 들어갑니다. 시·도 → 시군구 → 법정동 → 거래 내역.
평당가는 그 지역 실제 거래의 중앙값 이고(평균은 대형 평형 몇 건에 끌려다닙니다),
옆의 증감은 최근 3개월 vs 직전 3개월 입니다. 표본이 얇은 곳은 숫자를 비워 둡니다.
가격 변동
3개월 대비
전월 대비
거래량이 급변한 지역
거래량은 가격보다 먼저 움직입니다. 늘어나는 곳은 매수세가, 줄어드는 곳은 관망세가 붙은 신호로 봅니다.
신고가 경신 단지
같은 단지·같은 전용면적에서 이전 최고가를 넘긴 거래입니다. 평형이 다르면 비교하지 않습니다.
거래 이력이 3건 이상이고 직전 최고가가 1억원 이상인 건만 집계합니다.
전세가율과 깡통전세 위험
전세가율 = 전세 보증금 ÷ 매매가 . 같은 단지·같은 전용면적을 같은 기간으로 맞춰 비교합니다.
경매 낙찰가율이 보통 70~80%라, 전세가율이 80%를 넘으면 집이 경매로 넘어갔을 때
보증금을 다 못 받을 수 있습니다. 그래서 80%를 위험선으로 봅니다.
갱신계약은 뺐습니다. 계약갱신청구권으로 인상률이 5%로 묶여 있어 시세가 아닙니다.
순수 전세(월세 0)만 셉니다. 서로 다른 거래의 중앙값끼리 비교한 추정치 이며, 개별 계약의 실제 비율과는 다를 수 있습니다.
반대로 전세가율이 아주 낮은 곳 은 안전하다기보다 재건축·재개발 기대가
매매가에 얹힌 경우가 많습니다. 전세는 실사용 가치만 반영하기 때문입니다.
전세가율 80% 이상 단지
보증금을 지키려면 전세보증금 반환보증 (HUG·HF·SGI) 가입을 먼저 확인하세요.
아래는 표본이 있는 단지만 나열한 것이며, 여기 없다고 안전하다는 뜻은 아닙니다.
갱신계약 상한 도달률
갱신계약의 인상률은 계약갱신청구권 때문에 5%가 상한 이라, 인상률 자체는
거의 다 5.0%로 찍혀 정보가 없습니다. 대신 상한까지 올린 계약의 비율 을 봅니다.
이 값이 높을수록 전세 수요가 강해 집주인이 올릴 수 있는 만큼 올렸다는 뜻입니다.
전국 평당가 추이
두 선이 벌어지면 시세가 아니라 거래 구성 이 움직인 것입니다.
파란 선은 그달 실제 거래의 중위 평당가, 주황 선은 지역별 변동만 누적한 지수입니다.
* 표시된 달은 신고 기한이 남아 아직 채워지는 중입니다.
거래 형태와 매수 주체
직거래는 가족·특수관계인 간 거래가 섞여 시세보다 크게 낮거나 높습니다.
비중이 높은 지역은 호가를 그대로 믿기 어렵습니다. 법인·공공 매수 비중은 투자 수요가 들어온 신호로 봅니다.
위의 모든 시세·변동률 통계는 직거래와 토지임대부를 빼고 계산합니다.
월별 거래량
* 표시된 달은 아직 신고 기한(계약일+30일)이 남아 건수가 더 늘어납니다. 추세 판단에서 빼고 보세요.
면적대별 평당가
지역 × 면적대 교차
거래가 많은 상위 12개 지역입니다. 같은 지역이라도 평형에 따라 평당가가 크게 갈립니다.
한 달 표본으로는 칸이 너무 얇아, 이 표와 위 면적대 그래프만 2025-10~2026-09 거래를 모두 모아 계산합니다.
전체 지역 강원특별자치도 강릉시 강원특별자치도 고성군 강원특별자치도 동해시 강원특별자치도 삼척시 강원특별자치도 속초시 강원특별자치도 양구군 강원특별자치도 양양군 강원특별자치도 영월군 강원특별자치도 원주시 강원특별자치도 인제군 강원특별자치도 정선군 강원특별자치도 철원군 강원특별자치도 춘천시 강원특별자치도 태백시 강원특별자치도 평창군 강원특별자치도 홍천군 강원특별자치도 화천군 강원특별자치도 횡성군 경기도 가평군 경기도 고양시 경기도 고양시 덕양구 경기도 고양시 일산동구 경기도 고양시 일산서구 경기도 과천시 경기도 광명시 경기도 광주시 경기도 구리시 경기도 군포시 경기도 김포시 경기도 남양주시 경기도 동두천시 경기도 부천시 경기도 부천시 소사구 경기도 부천시 오정구 경기도 부천시 원미구 경기도 성남시 경기도 성남시 분당구 경기도 성남시 수정구 경기도 성남시 중원구 경기도 수원시 경기도 수원시 권선구 경기도 수원시 영통구 경기도 수원시 장안구 경기도 수원시 팔달구 경기도 시흥시 경기도 안산시 경기도 안산시 단원구 경기도 안산시 상록구 경기도 안성시 경기도 안양시 경기도 안양시 동안구 경기도 안양시 만안구 경기도 양주시 경기도 양평군 경기도 여주시 경기도 연천군 경기도 오산시 경기도 용인시 경기도 용인시 기흥구 경기도 용인시 수지구 경기도 용인시 처인구 경기도 의왕시 경기도 의정부시 경기도 이천시 경기도 파주시 경기도 평택시 경기도 포천시 경기도 하남시 경기도 화성시 경기도 화성시 동탄구 경기도 화성시 만세구 경기도 화성시 병점구 경기도 화성시 효행구 경상남도 거제시 경상남도 거창군 경상남도 고성군 경상남도 김해시 경상남도 남해군 경상남도 밀양시 경상남도 사천시 경상남도 산청군 경상남도 양산시 경상남도 의령군 경상남도 진주시 경상남도 창녕군 경상남도 창원시 경상남도 창원시 마산합포구 경상남도 창원시 마산회원구 경상남도 창원시 성산구 경상남도 창원시 의창구 경상남도 창원시 진해구 경상남도 통영시 경상남도 하동군 경상남도 함안군 경상남도 함양군 경상남도 합천군 경상북도 경산시 경상북도 경주시 경상북도 고령군 경상북도 구미시 경상북도 김천시 경상북도 문경시 경상북도 봉화군 경상북도 상주시 경상북도 성주군 경상북도 안동시 경상북도 영덕군 경상북도 영양군 경상북도 영주시 경상북도 영천시 경상북도 예천군 경상북도 울릉군 경상북도 울진군 경상북도 의성군 경상북도 청도군 경상북도 청송군 경상북도 칠곡군 경상북도 포항시 경상북도 포항시 남구 경상북도 포항시 북구 대구광역시 군위군 대구광역시 남구 대구광역시 달서구 대구광역시 달성군 대구광역시 동구 대구광역시 북구 대구광역시 서구 대구광역시 수성구 대구광역시 중구 대전광역시 대덕구 대전광역시 동구 대전광역시 서구 대전광역시 유성구 대전광역시 중구 부산광역시 강서구 부산광역시 금정구 부산광역시 기장군 부산광역시 남구 부산광역시 동구 부산광역시 동래구 부산광역시 부산진구 부산광역시 북구 부산광역시 사상구 부산광역시 사하구 부산광역시 서구 부산광역시 수영구 부산광역시 연제구 부산광역시 영도구 부산광역시 중구 부산광역시 해운대구 서울특별시 강남구 서울특별시 강동구 서울특별시 강북구 서울특별시 강서구 서울특별시 관악구 서울특별시 광진구 서울특별시 구로구 서울특별시 금천구 서울특별시 노원구 서울특별시 도봉구 서울특별시 동대문구 서울특별시 동작구 서울특별시 마포구 서울특별시 서대문구 서울특별시 서초구 서울특별시 성동구 서울특별시 성북구 서울특별시 송파구 서울특별시 양천구 서울특별시 영등포구 서울특별시 용산구 서울특별시 은평구 서울특별시 종로구 서울특별시 중구 서울특별시 중랑구 세종특별자치시 울산광역시 남구 울산광역시 동구 울산광역시 북구 울산광역시 울주군 울산광역시 중구 인천광역시 강화군 인천광역시 검단구 인천광역시 계양구 인천광역시 남동구 인천광역시 미추홀구 인천광역시 부평구 인천광역시 서해구 인천광역시 연수구 인천광역시 영종구 인천광역시 옹진군 인천광역시 제물포구 전남광주통합특별시 강진군 전남광주통합특별시 고흥군 전남광주통합특별시 곡성군 전남광주통합특별시 광산구 전남광주통합특별시 광양시 전남광주통합특별시 구례군 전남광주통합특별시 나주시 전남광주통합특별시 남구 전남광주통합특별시 담양군 전남광주통합특별시 동구 전남광주통합특별시 목포시 전남광주통합특별시 무안군 전남광주통합특별시 보성군 전남광주통합특별시 북구 전남광주통합특별시 서구 전남광주통합특별시 순천시 전남광주통합특별시 신안군 전남광주통합특별시 여수시 전남광주통합특별시 영광군 전남광주통합특별시 영암군 전남광주통합특별시 완도군 전남광주통합특별시 장성군 전남광주통합특별시 장흥군 전남광주통합특별시 진도군 전남광주통합특별시 함평군 전남광주통합특별시 해남군 전남광주통합특별시 화순군 전북특별자치도 고창군 전북특별자치도 군산시 전북특별자치도 김제시 전북특별자치도 남원시 전북특별자치도 무주군 전북특별자치도 부안군 전북특별자치도 순창군 전북특별자치도 완주군 전북특별자치도 익산시 전북특별자치도 임실군 전북특별자치도 장수군 전북특별자치도 전주시 전북특별자치도 전주시 덕진구 전북특별자치도 전주시 완산구 전북특별자치도 정읍시 전북특별자치도 진안군 제주특별자치도 서귀포시 제주특별자치도 제주시 충청남도 계룡시 충청남도 공주시 충청남도 금산군 충청남도 논산시 충청남도 당진시 충청남도 보령시 충청남도 부여군 충청남도 서산시 충청남도 서천군 충청남도 아산시 충청남도 예산군 충청남도 천안시 충청남도 천안시 동남구 충청남도 천안시 서북구 충청남도 청양군 충청남도 태안군 충청남도 홍성군 충청북도 괴산군 충청북도 단양군 충청북도 보은군 충청북도 영동군 충청북도 옥천군 충청북도 음성군 충청북도 제천시 충청북도 증평군 충청북도 진천군 충청북도 청주시 충청북도 청주시 상당구 충청북도 청주시 서원구 충청북도 청주시 청원구 충청북도 청주시 흥덕구 충청북도 충주시
전체 면적
60㎡ 이하 60~85㎡
85~135㎡ 135㎡ 초과
거래 많은 순
평당가 높은 순 평당가 낮은 순
최근 거래 순
자동
평당가 높음
중간
평당가 낮음
단지 목록
왜 이번 달 데이터가 없나요
실거래 신고 기한이 계약일로부터 30일 이라 당월 자료는 항상 덜 차 있습니다.
그대로 통계에 넣으면 실제로는 안 떨어졌는데 “하락”으로 보입니다. 그래서 이 페이지는
신고가 마감된 최근 달 을 기준월로 씁니다.
이 데이터는 무엇인가요
국토교통부가 공개하는 아파트 매매 실거래가 입니다. 실제로 계약이 체결되고
신고된 금액이라 호가가 아닙니다. 다만 계약일로부터 30일 이내 신고 가 원칙이라
최근 거래는 아직 반영되지 않았을 수 있습니다.
평당가는 전용면적 기준입니다. 분양 광고에 쓰는 공급면적 기준 평당가보다 높게 나옵니다.
같은 84㎡라도 전용 25.4평, 공급 34평이라 기준에 따라 숫자가 크게 달라집니다.
지도·목록에는 거래가 많은 상위 2,500개 단지를 싣습니다(전체 32,520곳). 위 통계·랭킹은 전체 거래 전수 로 계산한 값입니다. 최근 거래일 2026-09-18 · 해제된 거래는 제외했습니다. 좌표는 단지명 검색 결과라
동명 단지가 있으면 위치가 어긋날 수 있습니다.
dmFyIEQ9SlNPTi5wYXJzZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLWRhdGExZGFkYzY0ZDQzJykudGV4dENvbnRlbnQpOwp2YXIgVEhFTUVfSUNPPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09J2RhcmsnPyc8c3ZnIGNsYXNzPSJ0cGgtaSBpY28tcyIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjciIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGQ9Ik0yMCAxNC41QTguNSA4LjUgMCAwIDEgOS41IDRhOC41IDguNSAwIDEgMCAxMC41IDEwLjV6Ii8+PC9zdmc+Jzp0PT09J2xpZ2h0Jz8nPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgNy41YTQuNSA0LjUgMCAxIDAgMCA5IDQuNSA0LjUgMCAwIDAgMC05ek0xMiAydjJNMTIgMjB2Mk00LjIgNC4ybDEuNCAxLjRNMTguNCAxOC40bDEuNCAxLjRNMiAxMmgyTTIwIDEyaDJNNC4yIDE5LjhsMS40LTEuNE0xOC40IDUuNmwxLjQtMS40Ii8+PC9zdmc+JzonPHN2ZyBjbGFzcz0idHBoLWkgaWNvLXMiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS43IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBkPSJNMTIgM2E5IDkgMCAxIDAgMCAxOCA5IDkgMCAwIDAgMC0xOHpNMTIgM3YxOGE5IDkgMCAwIDAgMC0xOHoiLz48L3N2Zz4nO307Cgp2YXIgJD1mdW5jdGlvbihpKXtyZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RwaC0nK2kpO307CnZhciB2PWZ1bmN0aW9uKGkpe3ZhciBlPSQoaSk7cmV0dXJuIGU/KCtlLnZhbHVlfHwwKTowO307CnZhciBzPWZ1bmN0aW9uKGkpe3ZhciBlPSQoaSk7cmV0dXJuIGU/ZS52YWx1ZTonJzt9Owp2YXIgZj1mdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygna28tS1InKSsn7JuQJzt9Owp2YXIgZmQ9ZnVuY3Rpb24obixkKXtyZXR1cm4gbi50b0xvY2FsZVN0cmluZygna28tS1InLHttYXhpbXVtRnJhY3Rpb25EaWdpdHM6ZHx8MX0pO307CnZhciBjdXQxMD1mdW5jdGlvbih4KXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJvdW5kKHgpLzEwKSoxMDt9Owp2YXIgc2V0PWZ1bmN0aW9uKGksdCl7dmFyIGU9JChpKTtpZighZSlyZXR1cm47aWYoaT09PSdtYWluJyl7Y291bnRVcChlLHQpO31lbHNle2UudGV4dENvbnRlbnQ9dDt9fTsKCi8qIOyViOyghO2VnCDsoIDsnqXshowg7KCR6re8IOKAlCDsi5ztgazrpr8g66qo65OcL+ywqOuLqCDtmZjqsr3sl5DshJzrj4Qg7KO97KeAIOyViuqyjCAqLwp2YXIgc3RvcmU9ewogIGdldDpmdW5jdGlvbihrKXt0cnl7cmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKGspO31jYXRjaChlKXtyZXR1cm4gbnVsbDt9fSwKICBzZXQ6ZnVuY3Rpb24oayx2YWwpe3RyeXtsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrLHZhbCk7fWNhdGNoKGUpe319LAogIGRlbDpmdW5jdGlvbihrKXt0cnl7bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oayk7fWNhdGNoKGUpe319Cn07Cgp2YXIgdG9hc3Q9ZnVuY3Rpb24obXNnKXsKICB2YXIgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHBoLXRvYXN0Jyk7CiAgaWYoIXQpe3Q9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7dC5jbGFzc05hbWU9J3RwaC10b2FzdCc7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0KTt9CiAgdC50ZXh0Q29udGVudD1tc2c7dC5jbGFzc0xpc3QuYWRkKCdzaG93Jyk7CiAgY2xlYXJUaW1lb3V0KHQuX2gpO3QuX2g9c2V0VGltZW91dChmdW5jdGlvbigpe3QuY2xhc3NMaXN0LnJlbW92ZSgnc2hvdycpO30sMTkwMCk7Cn07CgovKiDthYzrp4gg7Yag6riAOiDsi5zsiqTthZwg7ISk7KCVIOKGkiDrnbzsnbTtirgg4oaSIOuLpO2BrCDsiJztmZggKi8KZnVuY3Rpb24gaW5pdFRoZW1lKHJvb3QpewogIHZhciBLPSd0cGgtdGhlbWUnLCBjdXI9c3RvcmUuZ2V0KEspOwogIGlmKGN1cikgcm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLGN1cik7CiAgdmFyIGI9JCgndGhlbWUnKTsKICBpZighYikgcmV0dXJuOwogIHZhciBsYWJlbD1mdW5jdGlvbigpewogICAgdmFyIHQ9cm9vdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnKTsKICAgIGIuaW5uZXJIVE1MPVRIRU1FX0lDTyh0KSsnIDxzcGFuPicrKHQ9PT0nZGFyayc/J+uLpO2BrCc6dD09PSdsaWdodCc/J+udvOydtO2KuCc6J+yekOuPmScpKyc8L3NwYW4+JzsKICB9OwogIGxhYmVsKCk7CiAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgIHZhciB0PXJvb3QuZ2V0QXR0cmlidXRlKCdkYXRhLXRoZW1lJyk7CiAgICB2YXIgbng9IXQ/J2xpZ2h0Jzp0PT09J2xpZ2h0Jz8nZGFyayc6Jyc7CiAgICBpZihueCl7cm9vdC5zZXRBdHRyaWJ1dGUoJ2RhdGEtdGhlbWUnLG54KTtzdG9yZS5zZXQoSyxueCk7fQogICAgZWxzZXtyb290LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS10aGVtZScpO3N0b3JlLmRlbChLKTt9CiAgICBsYWJlbCgpOwogIH0pOwp9CgovKiDsnoXroKXqsJIg4oaUIFVSTCDtjIzrnbzrr7jthLAg4oaUIGxvY2FsU3RvcmFnZSAqLwpmdW5jdGlvbiBpbml0U3RhdGUoc2x1ZywgaWRzLCBvbmNoYW5nZSl7CiAgdmFyIEtFWT0ndHBoLWluLScrc2x1ZywgcT1uZXcgVVJMU2VhcmNoUGFyYW1zKGxvY2F0aW9uLnNlYXJjaCksIHVzZWQ9ZmFsc2U7CiAgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7CiAgICB2YXIgZT0kKGkpOyBpZighZSkgcmV0dXJuOwogICAgaWYocS5oYXMoaSkpeyBlLnZhbHVlPXEuZ2V0KGkpOyB1c2VkPXRydWU7IH0KICB9KTsKICBpZighdXNlZCl7CiAgICB2YXIgcmF3PXN0b3JlLmdldChLRVkpOwogICAgaWYocmF3KXsgdHJ5eyB2YXIgbz1KU09OLnBhcnNlKHJhdyk7CiAgICAgIGlkcy5mb3JFYWNoKGZ1bmN0aW9uKGkpeyB2YXIgZT0kKGkpOyBpZihlJiZvW2ldIT09dW5kZWZpbmVkJiZvW2ldIT09JycpIGUudmFsdWU9b1tpXTsgfSk7CiAgICB9Y2F0Y2goZSl7fSB9CiAgfQogIHZhciBzYXZlPWZ1bmN0aW9uKCl7CiAgICB2YXIgbz17fTsgaWRzLmZvckVhY2goZnVuY3Rpb24oaSl7IHZhciBlPSQoaSk7IGlmKGUpIG9baV09ZS52YWx1ZTsgfSk7CiAgICBzdG9yZS5zZXQoS0VZLCBKU09OLnN0cmluZ2lmeShvKSk7CiAgfTsKICB2YXIgc2hhcmU9JCgnc2hhcmUnKTsKICBpZihzaGFyZSkgc2hhcmUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICB2YXIgcD1uZXcgVVJMU2VhcmNoUGFyYW1zKCk7CiAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsgdmFyIGU9JChpKTsgaWYoZSkgcC5zZXQoaSxlLnZhbHVlKTsgfSk7CiAgICB2YXIgdXJsPWxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZSsnPycrcC50b1N0cmluZygpOwogICAgdmFyIGRvbmU9ZnVuY3Rpb24oKXt0b2FzdCgn66eB7YGs66W8IOuzteyCrO2WiOyKteuLiOuLpCcpO307CiAgICBpZihuYXZpZ2F0b3IuY2xpcGJvYXJkJiZuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCl7CiAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHVybCkudGhlbihkb25lLGZ1bmN0aW9uKCl7cHJvbXB0KCfslYTrnpgg7KO87IaM66W8IOuzteyCrO2VmOyEuOyalCcsdXJsKTt9KTsKICAgIH0gZWxzZSBwcm9tcHQoJ+yVhOuemCDso7zshozrpbwg67O17IKs7ZWY7IS47JqUJyx1cmwpOwogIH0pOwogIHZhciBjb3B5PSQoJ2NvcHknKTsKICBpZihjb3B5KSBjb3B5LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgdmFyIGxpbmVzPVtkb2N1bWVudC50aXRsZS5zcGxpdCgnfCcpWzBdLnRyaW0oKV07CiAgICBpZHMuZm9yRWFjaChmdW5jdGlvbihpKXsKICAgICAgdmFyIGU9JChpKTsgaWYoIWUpIHJldHVybjsKICAgICAgdmFyIGxhYj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsYWJlbFtmb3I9dHBoLScraSsnXScpOwogICAgICB2YXIgdmFsPWUudGFnTmFtZT09PSdTRUxFQ1QnP2Uub3B0aW9uc1tlLnNlbGVjdGVkSW5kZXhdLnRleHQ6KCtlLnZhbHVlfHwwKS50b0xvY2FsZVN0cmluZygna28tS1InKTsKICAgICAgaWYobGFiKSBsaW5lcy5wdXNoKCfCtyAnK2xhYi50ZXh0Q29udGVudC50cmltKCkrJzogJyt2YWwpOwogICAgfSk7CiAgICBsaW5lcy5wdXNoKCcnKTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50cGgtdG90YWwnKS5mb3JFYWNoKGZ1bmN0aW9uKHQpewogICAgICB2YXIgbD10LnF1ZXJ5U2VsZWN0b3IoJy5sJyksIHZhbD10LnF1ZXJ5U2VsZWN0b3IoJy52Jyk7CiAgICAgIGlmKGwmJnZhbCkgbGluZXMucHVzaChsLnRleHRDb250ZW50LnRyaW0oKSsnOiAnK3ZhbC50ZXh0Q29udGVudC50cmltKCkpOwogICAgfSk7CiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLXBhZ2UgdGFibGUnKS5mb3JFYWNoKGZ1bmN0aW9uKHRiKXsKICAgICAgdGIucXVlcnlTZWxlY3RvckFsbCgndHInKS5mb3JFYWNoKGZ1bmN0aW9uKHRyKXsKICAgICAgICB2YXIgdGQ9dHIucXVlcnlTZWxlY3RvckFsbCgndGQnKTsKICAgICAgICBpZih0ZC5sZW5ndGg9PT0yKSBsaW5lcy5wdXNoKCfCtyAnK3RkWzBdLnRleHRDb250ZW50LnRyaW0oKSsnOiAnK3RkWzFdLnRleHRDb250ZW50LnRyaW0oKSk7CiAgICAgIH0pOwogICAgfSk7CiAgICBsaW5lcy5wdXNoKCcnLCBsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUpOwogICAgdmFyIHR4dD1saW5lcy5qb2luKCdcbicpOwogICAgdmFyIGRvbmU9ZnVuY3Rpb24oKXt0b2FzdCgn6rKw6rO866W8IOuzteyCrO2WiOyKteuLiOuLpCcpO307CiAgICBpZihuYXZpZ2F0b3IuY2xpcGJvYXJkJiZuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCkgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodHh0KS50aGVuKGRvbmUsZG9uZSk7CiAgICBlbHNlIHsgdmFyIHRhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7IHRhLnZhbHVlPXR4dDsgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YSk7CiAgICAgICAgICAgdGEuc2VsZWN0KCk7IHRyeXtkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO31jYXRjaChlKXt9IHRhLnJlbW92ZSgpOyBkb25lKCk7IH0KICB9KTsKICB2YXIgcmVzZXQ9JCgncmVzZXQnKTsKICBpZihyZXNldCkgcmVzZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICBzdG9yZS5kZWwoS0VZKTsgbG9jYXRpb24uaHJlZj1sb2NhdGlvbi5wYXRobmFtZTsKICB9KTsKICByZXR1cm4gc2F2ZTsKfQoKLyog6riI7JWhIOyeheugpSDrsJEg67mg66W4IOyhsOyglSDsuakgKi8KZnVuY3Rpb24gaW5pdENoaXBzKG9uY2hhbmdlKXsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudHBoLWNoaXAnKS5mb3JFYWNoKGZ1bmN0aW9uKGMpewogICAgYy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgdmFyIGU9JChjLmRhdGFzZXQudCk7IGlmKCFlKSByZXR1cm47CiAgICAgIHZhciBkPWMuZGF0YXNldC5kOwogICAgICBlLnZhbHVlID0gZD09PScwJyA/IDAgOiBNYXRoLm1heCgwLCgrZS52YWx1ZXx8MCkrKCtkKSk7CiAgICAgIG9uY2hhbmdlKCk7CiAgICB9KTsKICB9KTsKfQoKLyog7J6F66Cl6rCS7J2EIOyCrOuejOydtCDsnb3ripQg66y47J6l7Jy866GcICgzLDAwMCwwMDAg4oaSIDMwMOunjOybkCkgKi8KZnVuY3Rpb24ga29yTW9uZXkobil7CiAgbj1NYXRoLnJvdW5kKG4pOyBpZighbikgcmV0dXJuICcw7JuQJzsKICB2YXIgZW9rPU1hdGguZmxvb3Iobi8xMDAwMDAwMDApLCBtYW49TWF0aC5mbG9vcigobiUxMDAwMDAwMDApLzEwMDAwKSwgd29uPW4lMTAwMDAsIHA9W107CiAgaWYoZW9rKSBwLnB1c2goZW9rKyfslrUnKTsKICBpZihtYW4pIHAucHVzaChtYW4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+unjCcpOwogIGlmKHdvbikgcC5wdXNoKHdvbi50b0xvY2FsZVN0cmluZygna28tS1InKSk7CiAgcmV0dXJuIHAuam9pbignICcpKyfsm5AnOwp9CmZ1bmN0aW9uIGluaXRSZWFkKG1hcCl7CiAgT2JqZWN0LmtleXMobWFwKS5mb3JFYWNoKGZ1bmN0aW9uKGlkKXsKICAgIHZhciBlPSQoaWQpLCBvdXQ9JChtYXBbaWRdKTsgaWYoIWV8fCFvdXQpIHJldHVybjsKICAgIHZhciB1cGQ9ZnVuY3Rpb24oKXsgb3V0LnRleHRDb250ZW50ID0gKCtlLnZhbHVlPjApID8ga29yTW9uZXkoK2UudmFsdWUpIDogJyc7IH07CiAgICBlLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0Jyx1cGQpOyB1cGQoKTsKICB9KTsKfQoKCi8qIOyIq+yekCDsubTsmrTtirjsl4Ug4oCUIOqysOqzvOqwgCDrsJTrgJQg65WMIOu2gOuTnOufveqyjCAqLwpmdW5jdGlvbiBjb3VudFVwKGVsLCB0ZXh0KXsKICBpZighZWwpIHJldHVybjsKICB2YXIgcHJldj1lbC5fcmF3fHwnJywgY3VyPXRleHQ7CiAgZWwuX3Jhdz1jdXI7CiAgdmFyIHBuPXBhcnNlRmxvYXQoU3RyaW5nKHByZXYpLnJlcGxhY2UoL1teMC05Li1dL2csJycpKTsKICB2YXIgY249cGFyc2VGbG9hdChTdHJpbmcoY3VyKS5yZXBsYWNlKC9bXjAtOS4tXS9nLCcnKSk7CiAgdmFyIHJlZHVjZT13aW5kb3cubWF0Y2hNZWRpYSYmd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpJykubWF0Y2hlczsKICBpZihyZWR1Y2V8fCFpc0Zpbml0ZShwbil8fCFpc0Zpbml0ZShjbil8fHBuPT09Y258fE1hdGguYWJzKGNuLXBuKTwxKXtlbC50ZXh0Q29udGVudD1jdXI7cmV0dXJuO30KICB2YXIgcHJlPWN1ci5zbGljZSgwLGN1ci5zZWFyY2goL1swLTktXS8pKTsKICB2YXIgcG9zdD1jdXIuc2xpY2UoY3VyLnNlYXJjaCgvWzAtOV1bXjAtOV0qJC8pKzEpLnJlcGxhY2UoL15bMC05XS8sJycpOwogIHZhciBzdWZmaXg9Y3VyLnJlcGxhY2UoL15bXjAtOS1dKi8sJycpLnJlcGxhY2UoL15bMC05LC5cLV0rLywnJyk7CiAgdmFyIHQwPW51bGwsIGR1cj0zODA7CiAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZWwuX2FmfHwwKTsKICBmdW5jdGlvbiBzdGVwKHQpewogICAgaWYoIXQwKSB0MD10OwogICAgdmFyIGs9TWF0aC5taW4oMSwodC10MCkvZHVyKSwgZT0xLU1hdGgucG93KDEtaywzKTsKICAgIHZhciB2YWw9cG4rKGNuLXBuKSplOwogICAgZWwudGV4dENvbnRlbnQ9cHJlK01hdGgucm91bmQodmFsKS50b0xvY2FsZVN0cmluZygna28tS1InKStzdWZmaXg7CiAgICBpZihrPDEpIGVsLl9hZj1yZXF1ZXN0QW5pbWF0aW9uRnJhbWUoc3RlcCk7IGVsc2UgZWwudGV4dENvbnRlbnQ9Y3VyOwogIH0KICBlbC5fYWY9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHN0ZXApOwp9CgovKiDrqqjrsJTsnbwg6rOg7KCVIOqysOqzvOuwlCArIOunqCDsnITroZwgKi8KZnVuY3Rpb24gaW5pdFN0aWNreShyb290LCBsYWJlbCl7CiAgaWYoIXJvb3QpIHJldHVybjsKICB2YXIgbWFpbj0kKCdtYWluJyk7IGlmKCFtYWluKSByZXR1cm47CiAgdmFyIGJhcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICBiYXIuY2xhc3NOYW1lPSd0cGgtc3RpY2t5JzsKICBiYXIuaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJsIj4nK2xhYmVsKyc8L2Rpdj48ZGl2IGNsYXNzPSJ2IiBpZD0idHBoLXN0aWNreXYiPuKApjwvZGl2Pic7CiAgcm9vdC5hcHBlbmRDaGlsZChiYXIpOwogIHZhciB0b3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyk7CiAgdG9wLnR5cGU9J2J1dHRvbic7IHRvcC5jbGFzc05hbWU9J3RwaC10b3AnOyB0b3Auc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsJywn66eoIOychOuhnCcpOwogIHRvcC5pbm5lckhUTUw9Jzxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTIgMTlWNSIvPjxwYXRoIGQ9Ik01IDEybDctNyA3IDciLz48L3N2Zz4nOwogIHRvcC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXt3aW5kb3cuc2Nyb2xsVG8oe3RvcDowLGJlaGF2aW9yOidzbW9vdGgnfSk7fSk7CiAgcm9vdC5hcHBlbmRDaGlsZCh0b3ApOwogIHZhciBzdj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLXN0aWNreXYnKTsKICB2YXIgc3luYz1mdW5jdGlvbigpewogICAgaWYoc3YmJnN2LnRleHRDb250ZW50IT09bWFpbi50ZXh0Q29udGVudCkgc3YudGV4dENvbnRlbnQ9bWFpbi50ZXh0Q29udGVudDsKICAgIHZhciByPW1haW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICBiYXIuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLCByLmJvdHRvbTw1Nik7CiAgICB0b3AuY2xhc3NMaXN0LnRvZ2dsZSgnb24nLCB3aW5kb3cuc2Nyb2xsWT41MDApOwogIH07CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsc3luYyx7cGFzc2l2ZTp0cnVlfSk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsc3luYyk7CiAgaWYod2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIpIG5ldyBNdXRhdGlvbk9ic2VydmVyKHN5bmMpLm9ic2VydmUobWFpbix7Y2hpbGRMaXN0OnRydWUsY2hhcmFjdGVyRGF0YTp0cnVlLHN1YnRyZWU6dHJ1ZX0pOwogIHN5bmMoKTsKfQoKLyog4pSA4pSAIOywqO2KuCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAg7IOJ7J2AIENTUyDrs4DsiJggLS1zMS8tLXMyLy0tczMgKOqygOymneuQnCDsubTthYzqs6Drpqwg7YyU66CI7Yq4KS4KICAg6rOE7Je07J20IDLqsJwg7J207IOB7J2066m0IOuylOuhgOulvCDtla3sg4Eg67aZ7J206rOgLCDqsJLsnYAg7ZGc7JeQ64+EIOq3uOuMgOuhnCDsnojri6QuICovCnZhciBTVkdOUz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnOwpmdW5jdGlvbiBlbCh0LGEpe3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdOUyx0KTtmb3IodmFyIGsgaW4gYSllLnNldEF0dHJpYnV0ZShrLGFba10pO3JldHVybiBlO30KCmZ1bmN0aW9uIHRpcChib3gpewogIHZhciB0PWJveC5xdWVyeVNlbGVjdG9yKCcudHBoLXRpcCcpOwogIGlmKCF0KXt0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO3QuY2xhc3NOYW1lPSd0cGgtdGlwJztib3guYXBwZW5kQ2hpbGQodCk7fQogIHJldHVybiB0Owp9CmZ1bmN0aW9uIHNob3dUaXAoYm94LHgseSxodG1sKXsKICB2YXIgdD10aXAoYm94KTsgdC5pbm5lckhUTUw9aHRtbDsgdC5zdHlsZS5vcGFjaXR5PScxJzsKICB2YXIgdz10Lm9mZnNldFdpZHRoLCBidz1ib3guY2xpZW50V2lkdGg7CiAgdC5zdHlsZS5sZWZ0PU1hdGgubWF4KDQsTWF0aC5taW4oYnctdy00LHgtdy8yKSkrJ3B4JzsKICB0LnN0eWxlLnRvcD1NYXRoLm1heCgyLHktdC5vZmZzZXRIZWlnaHQtMTApKydweCc7Cn0KZnVuY3Rpb24gaGlkZVRpcChib3gpe3ZhciB0PWJveC5xdWVyeVNlbGVjdG9yKCcudHBoLXRpcCcpO2lmKHQpdC5zdHlsZS5vcGFjaXR5PScwJzt9CgovKiDshLjroZwg64iE7KCBIOunieuMgCDigJQgY2F0czpb652867KoXSwgc2VyaWVzOlt7bmFtZSxjbHMsZGF0YTpbXX1dICovCmZ1bmN0aW9uIHN0YWNrQ2hhcnQoYm94SWQsIGNhdHMsIHNlcmllcywgZm10KXsKICB2YXIgYm94PSQoYm94SWQpOyBpZighYm94KSByZXR1cm47CiAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N2ZywudHBoLWxlZ2VuZCcpLmZvckVhY2goZnVuY3Rpb24obil7bi5yZW1vdmUoKTt9KTsKICB2YXIgVz02NjAsSD0yMzYsUEw9OCxQUj04LFBUPTE0LFBCPTI2OwogIHZhciBuPWNhdHMubGVuZ3RoOyBpZighbikgcmV0dXJuOwogIHZhciB0b3RhbHM9Y2F0cy5tYXAoZnVuY3Rpb24oXyxpKXtyZXR1cm4gc2VyaWVzLnJlZHVjZShmdW5jdGlvbihhLHMpe3JldHVybiBhKyhzLmRhdGFbaV18fDApO30sMCk7fSk7CiAgdmFyIG1heD1NYXRoLm1heC5hcHBseShudWxsLHRvdGFscyl8fDE7CiAgdmFyIGl3PVctUEwtUFIsIGloPUgtUFQtUEI7CiAgdmFyIGJ3PU1hdGgubWF4KDYsTWF0aC5taW4oNDYsaXcvbiowLjY4KSksIHN0ZXA9aXcvbjsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICBmb3IodmFyIGc9MDtnPD0zO2crKyl7CiAgICB2YXIgZ3k9UFQraWgqZy8zOwogICAgc3ZnLmFwcGVuZENoaWxkKGVsKCdsaW5lJyx7eDE6UEwseTE6Z3kseDI6Vy1QUix5MjpneSwnY2xhc3MnOidnbCd9KSk7CiAgfQogIGNhdHMuZm9yRWFjaChmdW5jdGlvbihjLGkpewogICAgdmFyIGN4PVBMK3N0ZXAqaStzdGVwLzIsIHk9UFQraWgsIGFjYz0wOwogICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24ocyxzaSl7CiAgICAgIHZhciB2YWw9cy5kYXRhW2ldfHwwOyBpZih2YWw8PTApIHJldHVybjsKICAgICAgdmFyIGg9dmFsL21heCppaDsgeS09aDsgYWNjKz12YWw7CiAgICAgIHZhciBpc1RvcCA9IHNpPT09c2VyaWVzLmxlbmd0aC0xIHx8ICFzZXJpZXMuc2xpY2Uoc2krMSkuc29tZShmdW5jdGlvbih6KXtyZXR1cm4gKHouZGF0YVtpXXx8MCk+MDt9KTsKICAgICAgdmFyIHI9ZWwoJ3JlY3QnLHt4OmN4LWJ3LzIseTp5LHdpZHRoOmJ3LGhlaWdodDpNYXRoLm1heCgxLGgpLCdjbGFzcyc6cy5jbHMsCiAgICAgICAgICAgICAgICAgICAgICAgcng6aXNUb3A/NDowLHJ5OmlzVG9wPzQ6MH0pOwogICAgICBzdmcuYXBwZW5kQ2hpbGQocik7CiAgICB9KTsKICAgIHZhciBoaXQ9ZWwoJ3JlY3QnLHt4OmN4LXN0ZXAvMisxLHk6UFQsd2lkdGg6c3RlcC0yLGhlaWdodDppaCwnY2xhc3MnOidoaXQnfSk7CiAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJyxmdW5jdGlvbihldil7CiAgICAgIHZhciBicj1ib3guZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICAgIHZhciByb3dzPXNlcmllcy5tYXAoZnVuY3Rpb24ocyl7CiAgICAgICAgcmV0dXJuICc8c3BhbiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czoycHg7JwogICAgICAgICAgICAgKyAnYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpO21hcmdpbi1yaWdodDo2cHgiPjwvc3Bhbj4nK3MubmFtZSsnICcrZm10KHMuZGF0YVtpXXx8MCk7CiAgICAgIH0pLmpvaW4oJzxicj4nKTsKICAgICAgc2hvd1RpcChib3gsZXYuY2xpZW50WC1ici5sZWZ0LGV2LmNsaWVudFktYnIudG9wLAogICAgICAgICAgICAgICc8Yj4nK2MrJzwvYj48YnI+Jytyb3dzKyc8YnI+7ZWp6rOEICcrZm10KGFjYykpOwogICAgfSk7CiAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsZnVuY3Rpb24oKXtoaWRlVGlwKGJveCk7fSk7CiAgICBzdmcuYXBwZW5kQ2hpbGQoaGl0KTsKICAgIGlmKG48PTE0fHxpJU1hdGguY2VpbChuLzEyKT09PTApCiAgICAgIHN2Zy5hcHBlbmRDaGlsZChPYmplY3QuYXNzaWduKGVsKCd0ZXh0Jyx7eDpjeCx5OkgtOCwnY2xhc3MnOidsYicsJ3RleHQtYW5jaG9yJzonbWlkZGxlJ30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6Y30pKTsKICB9KTsKICBib3guYXBwZW5kQ2hpbGQoc3ZnKTsKICBib3guYXBwZW5kQ2hpbGQobGVnZW5kKHNlcmllcykpOwp9CgovKiDqsIDroZwg64iE7KCBIOunieuMgCjqtazshLEpIOKAlCBzZWdzOlt7bmFtZSxjbHMsdmFsdWV9XSDCtyDsp4HsoJEg652867KoICovCmZ1bmN0aW9uIGhTdGFjayhib3hJZCwgc2VncywgZm10KXsKICB2YXIgYm94PSQoYm94SWQpOyBpZighYm94KSByZXR1cm47CiAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N2ZywudHBoLWxlZ2VuZCcpLmZvckVhY2goZnVuY3Rpb24obil7bi5yZW1vdmUoKTt9KTsKICB2YXIgdG90YWw9c2Vncy5yZWR1Y2UoZnVuY3Rpb24oYSxzKXtyZXR1cm4gYStNYXRoLm1heCgwLHMudmFsdWUpO30sMCl8fDE7CiAgdmFyIFc9NjYwLEg9NjQsUEw9OCxQUj04LEJIPTM0LFRZPTEyOwogIHZhciBzdmc9ZWwoJ3N2Zycse3ZpZXdCb3g6JzAgMCAnK1crJyAnK0gscm9sZTonaW1nJ30pOwogIHZhciB4PVBMLCBpdz1XLVBMLVBSOwogIHNlZ3MuZm9yRWFjaChmdW5jdGlvbihzLGkpewogICAgdmFyIHc9TWF0aC5tYXgoMCxzLnZhbHVlKS90b3RhbCppdzsgaWYodzw9MCkgcmV0dXJuOwogICAgdmFyIGZpcnN0PWk9PT0wLCBsYXN0PWk9PT1zZWdzLmxlbmd0aC0xOwogICAgc3ZnLmFwcGVuZENoaWxkKGVsKCdyZWN0Jyx7eDp4LHk6VFksd2lkdGg6dyxoZWlnaHQ6QkgsJ2NsYXNzJzpzLmNscywKICAgICAgcng6KGZpcnN0fHxsYXN0KT80OjAscnk6KGZpcnN0fHxsYXN0KT80OjB9KSk7CiAgICB2YXIgcGN0PXMudmFsdWUvdG90YWwqMTAwOwogICAgaWYocGN0Pj05KQogICAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6eCt3LzIseTpUWStCSC8yKzQsJ2NsYXNzJzondmwnLAogICAgICAgICd0ZXh0LWFuY2hvcic6J21pZGRsZScsZmlsbDonI2ZmZid9KSx7dGV4dENvbnRlbnQ6cGN0LnRvRml4ZWQoMCkrJyUnfSkpOwogICAgdmFyIGhpdD1lbCgncmVjdCcse3g6eCx5OlRZLHdpZHRoOncsaGVpZ2h0OkJILCdjbGFzcyc6J2hpdCd9KTsKICAgIChmdW5jdGlvbihzZWcscHgscHcpewogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJyxmdW5jdGlvbihldil7CiAgICAgICAgdmFyIGJyPWJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICBzaG93VGlwKGJveCxldi5jbGllbnRYLWJyLmxlZnQsZXYuY2xpZW50WS1ici50b3AsCiAgICAgICAgICAnPGI+JytzZWcubmFtZSsnPC9iPjxicj4nK2ZtdChzZWcudmFsdWUpKycgwrcgJysoc2VnLnZhbHVlL3RvdGFsKjEwMCkudG9GaXhlZCgxKSsnJScpOwogICAgICB9KTsKICAgICAgaGl0LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLGZ1bmN0aW9uKCl7aGlkZVRpcChib3gpO30pOwogICAgfSkocyx4LHcpOwogICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICB4Kz13OwogIH0pOwogIGJveC5hcHBlbmRDaGlsZChzdmcpOwogIGJveC5hcHBlbmRDaGlsZChsZWdlbmQoc2Vncy5tYXAoZnVuY3Rpb24ocyl7cmV0dXJuIHtuYW1lOnMubmFtZSsnICcrZm10KHMudmFsdWUpLGNsczpzLmNsc307fSkpKTsKfQoKLyog7ISg7ZiVIOy2lOydtCDssKjtirgg4oCUIHNlcmllczpbe25hbWUsY2xzLGRhdGE6W119XSwgY2F0czpb652867KoXSAqLwpmdW5jdGlvbiBsaW5lQ2hhcnQoYm94SWQsIGNhdHMsIHNlcmllcywgZm10KXsKICB2YXIgYm94PSQoYm94SWQpOyBpZighYm94KSByZXR1cm47CiAgYm94LnF1ZXJ5U2VsZWN0b3JBbGwoJ3N2ZywudHBoLWxlZ2VuZCcpLmZvckVhY2goZnVuY3Rpb24obil7bi5yZW1vdmUoKTt9KTsKICB2YXIgbj1jYXRzLmxlbmd0aDsgaWYobjwyKSByZXR1cm47CiAgdmFyIFc9NjYwLEg9MjQwLFBMPTU0LFBSPTEyLFBUPTE0LFBCPTI2OwogIHZhciBhbGw9W107IHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKHMpe2FsbD1hbGwuY29uY2F0KHMuZGF0YS5maWx0ZXIoZnVuY3Rpb24odil7cmV0dXJuIHYhPW51bGw7fSkpO30pOwogIGlmKCFhbGwubGVuZ3RoKSByZXR1cm47CiAgdmFyIG14PU1hdGgubWF4LmFwcGx5KG51bGwsYWxsKSwgbW49TWF0aC5taW4uYXBwbHkobnVsbCxhbGwpOwogIHZhciBwYWQ9KG14LW1uKSowLjE1fHxteCowLjAyfHwxOyBteCs9cGFkOyBtbj1NYXRoLm1heCgwLG1uLXBhZCk7CiAgdmFyIGl3PVctUEwtUFIsIGloPUgtUFQtUEI7CiAgdmFyIFg9ZnVuY3Rpb24oaSl7cmV0dXJuIFBMK2l3KihuPT09MT8wLjU6aS8obi0xKSk7fTsKICB2YXIgWT1mdW5jdGlvbih2KXtyZXR1cm4gUFQraWgqKDEtKHYtbW4pLygobXgtbW4pfHwxKSk7fTsKICB2YXIgc3ZnPWVsKCdzdmcnLHt2aWV3Qm94OicwIDAgJytXKycgJytILHJvbGU6J2ltZyd9KTsKICBmb3IodmFyIGc9MDtnPD00O2crKyl7CiAgICB2YXIgZ3Y9bW4rKG14LW1uKSpnLzQsIGd5PVkoZ3YpOwogICAgc3ZnLmFwcGVuZENoaWxkKGVsKCdsaW5lJyx7eDE6UEwseTE6Z3kseDI6Vy1QUix5MjpneSwnY2xhc3MnOidnbCd9KSk7CiAgICBzdmcuYXBwZW5kQ2hpbGQoT2JqZWN0LmFzc2lnbihlbCgndGV4dCcse3g6UEwtOCx5Omd5KzQsJ2NsYXNzJzonbGInLCd0ZXh0LWFuY2hvcic6J2VuZCd9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXh0Q29udGVudDpNYXRoLnJvdW5kKGd2KS50b0xvY2FsZVN0cmluZygna28tS1InKX0pKTsKICB9CiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24ocyl7CiAgICB2YXIgZD0nJywgc3RhcnRlZD1mYWxzZTsKICAgIHMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKHYsaSl7CiAgICAgIGlmKHY9PW51bGwpIHJldHVybjsKICAgICAgZCs9KHN0YXJ0ZWQ/J0wnOidNJykrWChpKS50b0ZpeGVkKDEpKycgJytZKHYpLnRvRml4ZWQoMSkrJyAnOyBzdGFydGVkPXRydWU7CiAgICB9KTsKICAgIGlmKGQpIHN2Zy5hcHBlbmRDaGlsZChlbCgncGF0aCcse2Q6ZCxmaWxsOidub25lJywnc3Ryb2tlJzondmFyKC0tJytzLmNscysnKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3Ryb2tlLXdpZHRoJzoyLjIsJ3N0cm9rZS1saW5lam9pbic6J3JvdW5kJywnc3Ryb2tlLWxpbmVjYXAnOidyb3VuZCd9KSk7CiAgICB2YXIgbGFzdD1zLmRhdGEubGVuZ3RoLTE7CiAgICBpZihzLmRhdGFbbGFzdF0hPW51bGwpCiAgICAgIHN2Zy5hcHBlbmRDaGlsZChlbCgnY2lyY2xlJyx7Y3g6WChsYXN0KSxjeTpZKHMuZGF0YVtsYXN0XSkscjo0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw6J3ZhcigtLScrcy5jbHMrJyknLHN0cm9rZTondmFyKC0tc3VyZmFjZSknLCdzdHJva2Utd2lkdGgnOjJ9KSk7CiAgfSk7CiAgY2F0cy5mb3JFYWNoKGZ1bmN0aW9uKGMsaSl7CiAgICBpZihuPjEwICYmIGklTWF0aC5jZWlsKG4vNykhPT0wICYmIGkhPT1uLTEpIHJldHVybjsKICAgIHN2Zy5hcHBlbmRDaGlsZChPYmplY3QuYXNzaWduKGVsKCd0ZXh0Jyx7eDpYKGkpLHk6SC04LCdjbGFzcyc6J2xiJywndGV4dC1hbmNob3InOidtaWRkbGUnfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dGV4dENvbnRlbnQ6Y30pKTsKICB9KTsKICBmb3IodmFyIGk9MDtpPG47aSsrKXsKICAgIChmdW5jdGlvbihpZHgpewogICAgICB2YXIgaGl0PWVsKCdyZWN0Jyx7eDpYKGlkeCktaXcvKG4tMSkvMix5OlBULHdpZHRoOml3LyhuLTEpfHwyMCxoZWlnaHQ6aWgsJ2NsYXNzJzonaGl0J30pOwogICAgICBoaXQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJyxmdW5jdGlvbihldil7CiAgICAgICAgdmFyIGJyPWJveC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgICAgICB2YXIgcm93cz1zZXJpZXMubWFwKGZ1bmN0aW9uKHMpewogICAgICAgICAgcmV0dXJuICc8c3BhbiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czoycHg7JwogICAgICAgICAgICAgICArICdiYWNrZ3JvdW5kOnZhcigtLScrcy5jbHMrJyk7bWFyZ2luLXJpZ2h0OjZweCI+PC9zcGFuPicrcy5uYW1lKycgJwogICAgICAgICAgICAgICArIChzLmRhdGFbaWR4XT09bnVsbD8nLSc6Zm10KHMuZGF0YVtpZHhdKSk7CiAgICAgICAgfSkuam9pbignPGJyPicpOwogICAgICAgIHNob3dUaXAoYm94LGV2LmNsaWVudFgtYnIubGVmdCxldi5jbGllbnRZLWJyLnRvcCwnPGI+JytjYXRzW2lkeF0rJzwvYj48YnI+Jytyb3dzKTsKICAgICAgfSk7CiAgICAgIGhpdC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWxlYXZlJyxmdW5jdGlvbigpe2hpZGVUaXAoYm94KTt9KTsKICAgICAgc3ZnLmFwcGVuZENoaWxkKGhpdCk7CiAgICB9KShpKTsKICB9CiAgYm94LmFwcGVuZENoaWxkKHN2Zyk7CiAgYm94LmFwcGVuZENoaWxkKGxlZ2VuZChzZXJpZXMpKTsKfQoKZnVuY3Rpb24gbGVnZW5kKGl0ZW1zKXsKICB2YXIgZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgZC5jbGFzc05hbWU9J3RwaC1sZWdlbmQnOwogIGl0ZW1zLmZvckVhY2goZnVuY3Rpb24ocyl7CiAgICB2YXIgc3A9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgc3AuaW5uZXJIVE1MPSc8aSBzdHlsZT0iYmFja2dyb3VuZDp2YXIoLS0nK3MuY2xzKycpIj48L2k+JytzLm5hbWU7CiAgICBkLmFwcGVuZENoaWxkKHNwKTsKICB9KTsKICByZXR1cm4gZDsKfQoKdmFyIENMTz0wLCBDSEk9MCwgQVZHPTA7ICAgICAgLyog7IOJIOq4sOykgOqwkiDigJQgcmVuZGVyKCkg6rCAIOqwseyLoO2VnOuLpCAqLwoKLyog6riw67O4IOyDiSDtlajsiJguIOq4sOumhOqwksK367aA64+Z7IKwIOyghOq1rSDtjpjsnbTsp4DripQg7JWE656Y7JeQ7IScIOyekOq4sCDqsoPsnYQg64uk7IucIOygleydmO2VtCDrja7slrTsk7Tri6QuCiAgICjsi5zrj4TCt+yLnOq1sOq1rCDtjpjsnbTsp4Dsl5DripQg7J206rKMIOyXhuyWtOyEnCDtgbTrn6zsiqTthLAg7JWE7J207L2Y7J20IO2GteynuOuhnCDslYgg6re466Ck7KGM7JeI64ukKSAqLwpmdW5jdGlvbiBjb2xvckZvcih2LCBsbywgaGkpewogIGlmKGhpPD1sbykgcmV0dXJuICcjOWNhM2FmJzsKICB2YXIgdD0odi1sbykvKGhpLWxvKSwgY3M9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogIGlmKHQ+MC42NikgcmV0dXJuIGNzLmdldFByb3BlcnR5VmFsdWUoJy0tczInKS50cmltKCl8fCcjZWI2ODM0JzsKICBpZih0PDAuMzMpIHJldHVybiBjcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXMxJykudHJpbSgpfHwnIzJhNzhkNic7CiAgcmV0dXJuICcjOWNhM2FmJzsKfQovKiDsp4DsmKTsvZTrlKnsnbQg7Ja07KmM64ukIOyXieuase2VnCDqs7PsnYQg7KeR7Jy866m0KOuPmeuqhSDri6jsp4ApIOq3uCDtlZwg7KCQIOuVjOusuOyXkCDsp4Drj4TqsIAg7KCE6rWt7Jy866GcIOykjOyVhOybg+uQnOuLpC4KICAg7ISc7Jq4IO2OmOydtOyngOqwgCDrgqjslpHso7zCt+yduOyynOq5jOyngCDri7TslYQg67O07J24IOyggeydtCDsnojri6QuIOuwlOq5pSAyJeulvCDsnpjrnbwg67KU7JyE66W8IOyeoeuKlOuLpC4gKi8KZnVuY3Rpb24gZml0VG8obSwgcHRzLCBtYXhab29tKXsKICBpZighcHRzLmxlbmd0aCkgcmV0dXJuOwogIG0uaW52YWxpZGF0ZVNpemUoZmFsc2UpOwogIGlmKHB0cy5sZW5ndGggPCAzMCl7IG0uZml0Qm91bmRzKHB0cyx7cGFkZGluZzpbMzAsMzBdLG1heFpvb206bWF4Wm9vbXx8MTV9KTsgcmV0dXJuOyB9CiAgdmFyIGxhPXB0cy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHBbMF07fSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgdmFyIGxuPXB0cy5tYXAoZnVuY3Rpb24ocCl7cmV0dXJuIHBbMV07fSkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLWI7fSk7CiAgdmFyIHE9ZnVuY3Rpb24oYSx0KXtyZXR1cm4gYVtNYXRoLm1pbihhLmxlbmd0aC0xLE1hdGgubWF4KDAsTWF0aC5mbG9vcihhLmxlbmd0aCp0KSkpXTt9OwogIG0uZml0Qm91bmRzKFtbcShsYSwwLjAyKSxxKGxuLDAuMDIpXSxbcShsYSwwLjk4KSxxKGxuLDAuOTgpXV0sCiAgICAgICAgICAgICAge3BhZGRpbmc6WzMwLDMwXSxtYXhab29tOm1heFpvb218fDE1fSk7Cn0KCi8qIOuniOy7pOulvCDtlZwg6rCc7JSpIGFkZFRvIO2VmOuptCDtgbTrn6zsiqTthLDqsIAg66ek67KIIOuLpOyLnCDqs4TsgrDrkJzri6QoMiw1MDDqsJzrqbQg64iI7JeQIOuztOydtOqyjCDrsoTrsoXsnbTqs6AKICAg7ZmU66m07JeQIOqyuey5nCDssYTroZwg64Ko64qU64ukKS4g66qo7JWE7IScIGFkZExheWVycyDroZwg7ZWcIOuyiOyXkCDrhKPripTri6QuICovCnZhciBQRU5EPVtdOwpmdW5jdGlvbiBhZGRBbGwobGF5ZXIsIGFycil7CiAgaWYobGF5ZXIuYWRkTGF5ZXJzKSBsYXllci5hZGRMYXllcnMoYXJyKTsKICBlbHNlIGFyci5mb3JFYWNoKGZ1bmN0aW9uKG0peyBtLmFkZFRvKGxheWVyKTsgfSk7Cn0KCmZ1bmN0aW9uIGNsdXN0ZXJHcm91cChmbXQsIGNvbEZuKXsKICBpZighd2luZG93LkwgfHwgIUwubWFya2VyQ2x1c3Rlckdyb3VwKQogICAgcmV0dXJuIEwubGF5ZXJHcm91cCgpOyAgICAgICAgICAvKiDtlIzrn6zqt7jsnbjsnbQg66q7IOuWtOycvOuptCDqt7jrg6Ug64ukIOywjeuKlOuLpCAqLwogIHJldHVybiBMLm1hcmtlckNsdXN0ZXJHcm91cCh7CiAgICBjaHVua2VkTG9hZGluZzp0cnVlLCBzaG93Q292ZXJhZ2VPbkhvdmVyOmZhbHNlLCBzcGlkZXJmeU9uTWF4Wm9vbTp0cnVlLAogICAgZGlzYWJsZUNsdXN0ZXJpbmdBdFpvb206MTUsIG1heENsdXN0ZXJSYWRpdXM6ODQsCiAgICBpY29uQ3JlYXRlRnVuY3Rpb246ZnVuY3Rpb24oYyl7CiAgICAgIHZhciBtcz1jLmdldEFsbENoaWxkTWFya2VycygpLCB2PVtdOwogICAgICBmb3IodmFyIGk9MDtpPG1zLmxlbmd0aDtpKyspeyBpZihtc1tpXS5vcHRpb25zLnB2IT1udWxsKSB2LnB1c2gobXNbaV0ub3B0aW9ucy5wdik7IH0KICAgICAgdi5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEtYjt9KTsKICAgICAgdmFyIG1pZCA9IHYubGVuZ3RoPyB2W3YubGVuZ3RoPj4xXSA6IG51bGw7CiAgICAgIHZhciBuPWMuZ2V0Q2hpbGRDb3VudCgpOwogICAgICB2YXIgc3ogPSBuPjMwMD81OCA6IG4+NjA/NTAgOiA0MzsKICAgICAgcmV0dXJuIEwuZGl2SWNvbih7Y2xhc3NOYW1lOid0cGgtY2x1c3RlcicsIGljb25TaXplOltzeixzel0sCiAgICAgICAgaHRtbDonPGRpdiBjbGFzcz0iY2wiIHN0eWxlPSJ3aWR0aDonK3N6KydweDtoZWlnaHQ6JytzeisncHg7YmFja2dyb3VuZDonCiAgICAgICAgICAgICArKG1pZD09bnVsbD8nIzljYTNhZic6Y29sRm4obWlkKSkrJyI+JwogICAgICAgICAgICAgKyc8Yj4nKyhtaWQ9PW51bGw/Jyc6Zm10KG1pZCkpKyc8L2I+PGk+JytuKyfqs7M8L2k+PC9kaXY+J30pOwogICAgfX0pOwp9Cgp2YXIgUklEWD1beyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDqsJXrponsi5wiLCAicyI6ICLqsJXrponsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3qsJXrponsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg6rOg7ISx6rWwIiwgInMiOiAi6rOg7ISx6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At6rOg7ISx6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOuPme2VtOyLnCIsICJzIjogIuuPme2VtOyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeuPme2VtOyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDsgrzsspnsi5wiLCAicyI6ICLsgrzsspnsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3sgrzsspnsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7IaN7LSI7IucIiwgInMiOiAi7IaN7LSI7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7IaN7LSI7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyWkeq1rOq1sCIsICJzIjogIuyWkeq1rOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyWkeq1rOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDslpHslpHqtbAiLCAicyI6ICLslpHslpHqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3slpHslpHqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7JiB7JuU6rWwIiwgInMiOiAi7JiB7JuU6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7JiB7JuU6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOybkOyjvOyLnCIsICJzIjogIuybkOyjvOyLnCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeybkOyjvOyLnC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDsnbjsoJzqtbAiLCAicyI6ICLsnbjsoJzqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3snbjsoJzqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7KCV7ISg6rWwIiwgInMiOiAi7KCV7ISg6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7KCV7ISg6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIOyyoOybkOq1sCIsICJzIjogIuyyoOybkOq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLeyyoOybkOq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDstpjsspzsi5wiLCAicyI6ICLstpjsspzsi5wiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3stpjsspzsi5wvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7YOc67Cx7IucIiwgInMiOiAi7YOc67Cx7IucIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7YOc67Cx7IucLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2Pieywveq1sCIsICJzIjogIu2Pieywveq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2Pieywveq1sC8ifSwgeyJuIjogIuqwleybkO2KueuzhOyekOy5mOuPhCDtmY3sspzqtbAiLCAicyI6ICLtmY3sspzqtbAiLCAiZCI6ICLqsJXsm5AiLCAidSI6ICIv67aA64+Z7IKwLeqwleybkC3tmY3sspzqtbAvIn0sIHsibiI6ICLqsJXsm5Dtirnrs4TsnpDsuZjrj4Qg7ZmU7LKc6rWwIiwgInMiOiAi7ZmU7LKc6rWwIiwgImQiOiAi6rCV7JuQIiwgInUiOiAiL+u2gOuPmeyCsC3qsJXsm5At7ZmU7LKc6rWwLyJ9LCB7Im4iOiAi6rCV7JuQ7Yq567OE7J6Q7LmY64+EIO2aoeyEseq1sCIsICJzIjogIu2aoeyEseq1sCIsICJkIjogIuqwleybkCIsICJ1IjogIi/rtoDrj5nsgrAt6rCV7JuQLe2aoeyEseq1sC8ifSwgeyJuIjogIuqyveq4sOuPhCDqsIDtj4nqtbAiLCAicyI6ICLqsIDtj4nqtbAiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qsIDtj4nqtbAvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rOg7JaR7IucIOuNleyWkeq1rCIsICJzIjogIuqzoOyWkeyLnCDrjZXslpHqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qs6DslpHsi5wt642V7JaR6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOqzoOyWkeyLnCDsnbzsgrDrj5nqtawiLCAicyI6ICLqs6DslpHsi5wg7J287IKw64+Z6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rOg7JaR7IucLeydvOyCsOuPmeq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDqs6DslpHsi5wg7J287IKw7ISc6rWsIiwgInMiOiAi6rOg7JaR7IucIOydvOyCsOyEnOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeqzoOyWkeyLnC3snbzsgrDshJzqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rO87LKc7IucIiwgInMiOiAi6rO87LKc7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rO87LKc7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOq0keuqheyLnCIsICJzIjogIuq0keuqheyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeq0keuqheyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDqtJHso7zsi5wiLCAicyI6ICLqtJHso7zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3qtJHso7zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg6rWs66as7IucIiwgInMiOiAi6rWs66as7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt6rWs66as7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOq1sO2PrOyLnCIsICJzIjogIuq1sO2PrOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeq1sO2PrOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDquYDtj6zsi5wiLCAicyI6ICLquYDtj6zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3quYDtj6zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg64Ko7JaR7KO87IucIiwgInMiOiAi64Ko7JaR7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt64Ko7JaR7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOuPmeuRkOyynOyLnCIsICJzIjogIuuPmeuRkOyynOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeuPmeuRkOyynOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDrtoDsspzsi5wg7IaM7IKs6rWsIiwgInMiOiAi67aA7LKc7IucIOyGjOyCrOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeu2gOyynOyLnC3shozsgqzqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg67aA7LKc7IucIOyYpOygleq1rCIsICJzIjogIuu2gOyynOyLnCDsmKTsoJXqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3rtoDsspzsi5wt7Jik7KCV6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOu2gOyynOyLnCDsm5Drr7jqtawiLCAicyI6ICLrtoDsspzsi5wg7JuQ66+46rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt67aA7LKc7IucLeybkOuvuOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDshLHrgqjsi5wg67aE64u56rWsIiwgInMiOiAi7ISx64Ko7IucIOu2hOuLueq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyEseuCqOyLnC3rtoTri7nqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ISx64Ko7IucIOyImOygleq1rCIsICJzIjogIuyEseuCqOyLnCDsiJjsoJXqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3shLHrgqjsi5wt7IiY7KCV6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyEseuCqOyLnCDspJHsm5DqtawiLCAicyI6ICLshLHrgqjsi5wg7KSR7JuQ6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ISx64Ko7IucLeykkeybkOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsiJjsm5Dsi5wg6raM7ISg6rWsIiwgInMiOiAi7IiY7JuQ7IucIOq2jOyEoOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyImOybkOyLnC3qtozshKDqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7IiY7JuQ7IucIOyYge2Gteq1rCIsICJzIjogIuyImOybkOyLnCDsmIHthrXqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3siJjsm5Dsi5wt7JiB7Ya16rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyImOybkOyLnCDsnqXslYjqtawiLCAicyI6ICLsiJjsm5Dsi5wg7J6l7JWI6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7IiY7JuQ7IucLeyepeyViOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsiJjsm5Dsi5wg7YyU64us6rWsIiwgInMiOiAi7IiY7JuQ7IucIO2MlOuLrOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyImOybkOyLnC3tjJTri6zqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Iuc7Z2l7IucIiwgInMiOiAi7Iuc7Z2l7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Iuc7Z2l7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOyViOyCsOyLnCDri6jsm5DqtawiLCAicyI6ICLslYjsgrDsi5wg64uo7JuQ6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7JWI7IKw7IucLeuLqOybkOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjsgrDsi5wg7IOB66Gd6rWsIiwgInMiOiAi7JWI7IKw7IucIOyDgeuhneq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyCsOyLnC3sg4HroZ3qtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JWI7ISx7IucIiwgInMiOiAi7JWI7ISx7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7JWI7ISx7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOyViOyWkeyLnCDrj5nslYjqtawiLCAicyI6ICLslYjslpHsi5wg64+Z7JWI6rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7JWI7JaR7IucLeuPmeyViOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDslYjslpHsi5wg66eM7JWI6rWsIiwgInMiOiAi7JWI7JaR7IucIOunjOyViOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyViOyWkeyLnC3rp4zslYjqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7JaR7KO87IucIiwgInMiOiAi7JaR7KO87IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7JaR7KO87IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOyWke2Pieq1sCIsICJzIjogIuyWke2Pieq1sCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyWke2Pieq1sC8ifSwgeyJuIjogIuqyveq4sOuPhCDsl6zso7zsi5wiLCAicyI6ICLsl6zso7zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3sl6zso7zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jew7LKc6rWwIiwgInMiOiAi7Jew7LKc6rWwIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jew7LKc6rWwLyJ9LCB7Im4iOiAi6rK96riw64+EIOyYpOyCsOyLnCIsICJzIjogIuyYpOyCsOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyYpOyCsOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDsmqnsnbjsi5wg6riw7Z2l6rWsIiwgInMiOiAi7Jqp7J247IucIOq4sO2dpeq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeyaqeyduOyLnC3quLDtnaXqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Jqp7J247IucIOyImOyngOq1rCIsICJzIjogIuyaqeyduOyLnCDsiJjsp4DqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3smqnsnbjsi5wt7IiY7KeA6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIOyaqeyduOyLnCDsspjsnbjqtawiLCAicyI6ICLsmqnsnbjsi5wg7LKY7J246rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Jqp7J247IucLeyymOyduOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDsnZjsmZXsi5wiLCAicyI6ICLsnZjsmZXsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3snZjsmZXsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7J2Y7KCV67aA7IucIiwgInMiOiAi7J2Y7KCV67aA7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7J2Y7KCV67aA7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIOydtOyynOyLnCIsICJzIjogIuydtOyynOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLeydtOyynOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDtjIzso7zsi5wiLCAicyI6ICLtjIzso7zsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tjIzso7zsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7Y+J7YOd7IucIiwgInMiOiAi7Y+J7YOd7IucIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7Y+J7YOd7IucLyJ9LCB7Im4iOiAi6rK96riw64+EIO2PrOyynOyLnCIsICJzIjogIu2PrOyynOyLnCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2PrOyynOyLnC8ifSwgeyJuIjogIuqyveq4sOuPhCDtlZjrgqjsi5wiLCAicyI6ICLtlZjrgqjsi5wiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tlZjrgqjsi5wvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZmU7ISx7IucIOuPme2DhOq1rCIsICJzIjogIu2ZlOyEseyLnCDrj5ntg4TqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tmZTshLHsi5wt64+Z7YOE6rWsLyJ9LCB7Im4iOiAi6rK96riw64+EIO2ZlOyEseyLnCDrp4zshLjqtawiLCAicyI6ICLtmZTshLHsi5wg66eM7IS46rWsIiwgImQiOiAi6rK96riwIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3quLAt7ZmU7ISx7IucLeunjOyEuOq1rC8ifSwgeyJuIjogIuqyveq4sOuPhCDtmZTshLHsi5wg67OR7KCQ6rWsIiwgInMiOiAi7ZmU7ISx7IucIOuzkeygkOq1rCIsICJkIjogIuqyveq4sCIsICJ1IjogIi/rtoDrj5nsgrAt6rK96riwLe2ZlOyEseyLnC3rs5HsoJDqtawvIn0sIHsibiI6ICLqsr3quLDrj4Qg7ZmU7ISx7IucIO2aqO2Wieq1rCIsICJzIjogIu2ZlOyEseyLnCDtmqjtlonqtawiLCAiZCI6ICLqsr3quLAiLCAidSI6ICIv67aA64+Z7IKwLeqyveq4sC3tmZTshLHsi5wt7Zqo7ZaJ6rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOqxsOygnOyLnCIsICJzIjogIuqxsOygnOyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeqxsOygnOyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDqsbDssL3qtbAiLCAicyI6ICLqsbDssL3qtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3qsbDssL3qtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg6rOg7ISx6rWwIiwgInMiOiAi6rOg7ISx6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt6rOg7ISx6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOq5gO2VtOyLnCIsICJzIjogIuq5gO2VtOyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeq5gO2VtOyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDrgqjtlbTqtbAiLCAicyI6ICLrgqjtlbTqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3rgqjtlbTqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg67CA7JaR7IucIiwgInMiOiAi67CA7JaR7IucIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt67CA7JaR7IucLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOyCrOyynOyLnCIsICJzIjogIuyCrOyynOyLnCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeyCrOyynOyLnC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsgrDssq3qtbAiLCAicyI6ICLsgrDssq3qtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3sgrDssq3qtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7JaR7IKw7IucIiwgInMiOiAi7JaR7IKw7IucIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7JaR7IKw7IucLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOydmOugueq1sCIsICJzIjogIuydmOugueq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeydmOugueq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDsp4Tso7zsi5wiLCAicyI6ICLsp4Tso7zsi5wiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3sp4Tso7zsi5wvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC964WV6rWwIiwgInMiOiAi7LC964WV6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7LC964WV6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveybkOyLnCDrp4jsgrDtlantj6zqtawiLCAicyI6ICLssL3sm5Dsi5wg66eI7IKw7ZWp7Y+s6rWsIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7LC97JuQ7IucLeuniOyCsO2Vqe2PrOq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg66eI7IKw7ZqM7JuQ6rWsIiwgInMiOiAi7LC97JuQ7IucIOuniOyCsO2ajOybkOq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3rp4jsgrDtmozsm5DqtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7LC97JuQ7IucIOyEseyCsOq1rCIsICJzIjogIuywveybkOyLnCDshLHsgrDqtawiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3ssL3sm5Dsi5wt7ISx7IKw6rWsLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIOywveybkOyLnCDsnZjssL3qtawiLCAicyI6ICLssL3sm5Dsi5wg7J2Y7LC96rWsIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7LC97JuQ7IucLeydmOywveq1rC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDssL3sm5Dsi5wg7KeE7ZW06rWsIiwgInMiOiAi7LC97JuQ7IucIOynhO2VtOq1rCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLeywveybkOyLnC3sp4TtlbTqtawvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7Ya17JiB7IucIiwgInMiOiAi7Ya17JiB7IucIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7Ya17JiB7IucLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2VmOuPmeq1sCIsICJzIjogIu2VmOuPmeq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2VmOuPmeq1sC8ifSwgeyJuIjogIuqyveyDgeuCqOuPhCDtlajslYjqtbAiLCAicyI6ICLtlajslYjqtbAiLCAiZCI6ICLqsr3rgqgiLCAidSI6ICIv67aA64+Z7IKwLeqyveuCqC3tlajslYjqtbAvIn0sIHsibiI6ICLqsr3sg4Hrgqjrj4Qg7ZWo7JaR6rWwIiwgInMiOiAi7ZWo7JaR6rWwIiwgImQiOiAi6rK964KoIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rgqgt7ZWo7JaR6rWwLyJ9LCB7Im4iOiAi6rK97IOB64Ko64+EIO2VqeyynOq1sCIsICJzIjogIu2VqeyynOq1sCIsICJkIjogIuqyveuCqCIsICJ1IjogIi/rtoDrj5nsgrAt6rK964KoLe2VqeyynOq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDqsr3sgrDsi5wiLCAicyI6ICLqsr3sgrDsi5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3qsr3sgrDsi5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rK97KO87IucIiwgInMiOiAi6rK97KO87IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rK97KO87IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOqzoOugueq1sCIsICJzIjogIuqzoOugueq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeqzoOugueq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDqtazrr7jsi5wiLCAicyI6ICLqtazrr7jsi5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3qtazrr7jsi5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg6rmA7LKc7IucIiwgInMiOiAi6rmA7LKc7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt6rmA7LKc7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOusuOqyveyLnCIsICJzIjogIuusuOqyveyLnCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeusuOqyveyLnC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDrtIntmZTqtbAiLCAicyI6ICLrtIntmZTqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3rtIntmZTqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7IOB7KO87IucIiwgInMiOiAi7IOB7KO87IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7IOB7KO87IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyEseyjvOq1sCIsICJzIjogIuyEseyjvOq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyEseyjvOq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDslYjrj5nsi5wiLCAicyI6ICLslYjrj5nsi5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3slYjrj5nsi5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JiB642V6rWwIiwgInMiOiAi7JiB642V6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JiB642V6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYgeyWkeq1sCIsICJzIjogIuyYgeyWkeq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYgeyWkeq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmIHso7zsi5wiLCAicyI6ICLsmIHso7zsi5wiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smIHso7zsi5wvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7JiB7LKc7IucIiwgInMiOiAi7JiB7LKc7IucIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7JiB7LKc7IucLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOyYiOyynOq1sCIsICJzIjogIuyYiOyynOq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeyYiOyynOq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDsmrjrponqtbAiLCAicyI6ICLsmrjrponqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3smrjrponqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Jq47KeE6rWwIiwgInMiOiAi7Jq47KeE6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7Jq47KeE6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOydmOyEseq1sCIsICJzIjogIuydmOyEseq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLeydmOyEseq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDssq3rj4TqtbAiLCAicyI6ICLssq3rj4TqtbAiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3ssq3rj4TqtbAvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7LKt7Iah6rWwIiwgInMiOiAi7LKt7Iah6rWwIiwgImQiOiAi6rK967aBIiwgInUiOiAiL+u2gOuPmeyCsC3qsr3rtoEt7LKt7Iah6rWwLyJ9LCB7Im4iOiAi6rK97IOB67aB64+EIOy5oOqzoeq1sCIsICJzIjogIuy5oOqzoeq1sCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLey5oOqzoeq1sC8ifSwgeyJuIjogIuqyveyDgeu2geuPhCDtj6ztla3si5wg64Ko6rWsIiwgInMiOiAi7Y+s7ZWt7IucIOuCqOq1rCIsICJkIjogIuqyveu2gSIsICJ1IjogIi/rtoDrj5nsgrAt6rK967aBLe2PrO2VreyLnC3rgqjqtawvIn0sIHsibiI6ICLqsr3sg4HrtoHrj4Qg7Y+s7ZWt7IucIOu2geq1rCIsICJzIjogIu2PrO2VreyLnCDrtoHqtawiLCAiZCI6ICLqsr3rtoEiLCAidSI6ICIv67aA64+Z7IKwLeqyveu2gS3tj6ztla3si5wt67aB6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOq1sOychOq1sCIsICJzIjogIuq1sOychOq1sCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeq1sOychOq1sC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDrgqjqtawiLCAicyI6ICLrgqjqtawiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3rgqjqtawvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg64us7ISc6rWsIiwgInMiOiAi64us7ISc6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt64us7ISc6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOuLrOyEseq1sCIsICJzIjogIuuLrOyEseq1sCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeuLrOyEseq1sC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDrj5nqtawiLCAicyI6ICLrj5nqtawiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3rj5nqtawvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg67aB6rWsIiwgInMiOiAi67aB6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt67aB6rWsLyJ9LCB7Im4iOiAi64yA6rWs6rSR7Jet7IucIOyEnOq1rCIsICJzIjogIuyEnOq1rCIsICJkIjogIuuMgOq1rCIsICJ1IjogIi/rtoDrj5nsgrAt64yA6rWsLeyEnOq1rC8ifSwgeyJuIjogIuuMgOq1rOq0keyXreyLnCDsiJjshLHqtawiLCAicyI6ICLsiJjshLHqtawiLCAiZCI6ICLrjIDqtawiLCAidSI6ICIv67aA64+Z7IKwLeuMgOq1rC3siJjshLHqtawvIn0sIHsibiI6ICLrjIDqtazqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi64yA6rWsIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDqtawt7KSR6rWsLyJ9LCB7Im4iOiAi64yA7KCE6rSR7Jet7IucIOuMgOuNleq1rCIsICJzIjogIuuMgOuNleq1rCIsICJkIjogIuuMgOyghCIsICJ1IjogIi/rtoDrj5nsgrAt64yA7KCELeuMgOuNleq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDrj5nqtawiLCAicyI6ICLrj5nqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3rj5nqtawvIn0sIHsibiI6ICLrjIDsoITqtJHsl63si5wg7ISc6rWsIiwgInMiOiAi7ISc6rWsIiwgImQiOiAi64yA7KCEIiwgInUiOiAiL+u2gOuPmeyCsC3rjIDsoIQt7ISc6rWsLyJ9LCB7Im4iOiAi64yA7KCE6rSR7Jet7IucIOycoOyEseq1rCIsICJzIjogIuycoOyEseq1rCIsICJkIjogIuuMgOyghCIsICJ1IjogIi/rtoDrj5nsgrAt64yA7KCELeycoOyEseq1rC8ifSwgeyJuIjogIuuMgOyghOq0keyXreyLnCDspJHqtawiLCAicyI6ICLspJHqtawiLCAiZCI6ICLrjIDsoIQiLCAidSI6ICIv67aA64+Z7IKwLeuMgOyghC3spJHqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg6rCV7ISc6rWsIiwgInMiOiAi6rCV7ISc6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt6rCV7ISc6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOq4iOygleq1rCIsICJzIjogIuq4iOygleq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeq4iOygleq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDquLDsnqXqtbAiLCAicyI6ICLquLDsnqXqtbAiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3quLDsnqXqtbAvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt64Ko6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOuPmeq1rCIsICJzIjogIuuPmeq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeuPmeq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDrj5nrnpjqtawiLCAicyI6ICLrj5nrnpjqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3rj5nrnpjqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg67aA7IKw7KeE6rWsIiwgInMiOiAi67aA7IKw7KeE6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt67aA7IKw7KeE6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeu2geq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDsgqzsg4HqtawiLCAicyI6ICLsgqzsg4HqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3sgqzsg4HqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7IKs7ZWY6rWsIiwgInMiOiAi7IKs7ZWY6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7IKs7ZWY6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyEnOq1rCIsICJzIjogIuyEnOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyEnOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDsiJjsmIHqtawiLCAicyI6ICLsiJjsmIHqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3siJjsmIHqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7Jew7KCc6rWsIiwgInMiOiAi7Jew7KCc6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7Jew7KCc6rWsLyJ9LCB7Im4iOiAi67aA7IKw6rSR7Jet7IucIOyYgeuPhOq1rCIsICJzIjogIuyYgeuPhOq1rCIsICJkIjogIuu2gOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt67aA7IKwLeyYgeuPhOq1rC8ifSwgeyJuIjogIuu2gOyCsOq0keyXreyLnCDspJHqtawiLCAicyI6ICLspJHqtawiLCAiZCI6ICLrtoDsgrAiLCAidSI6ICIv67aA64+Z7IKwLeu2gOyCsC3spJHqtawvIn0sIHsibiI6ICLrtoDsgrDqtJHsl63si5wg7ZW07Jq064yA6rWsIiwgInMiOiAi7ZW07Jq064yA6rWsIiwgImQiOiAi67aA7IKwIiwgInUiOiAiL+u2gOuPmeyCsC3rtoDsgrAt7ZW07Jq064yA6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOqwleuCqOq1rCIsICJzIjogIuqwleuCqOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeqwleuCqOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqsJXrj5nqtawiLCAicyI6ICLqsJXrj5nqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qsJXrj5nqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rCV67aB6rWsIiwgInMiOiAi6rCV67aB6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rCV67aB6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOqwleyEnOq1rCIsICJzIjogIuqwleyEnOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeqwleyEnOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDqtIDslYXqtawiLCAicyI6ICLqtIDslYXqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3qtIDslYXqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg6rSR7KeE6rWsIiwgInMiOiAi6rSR7KeE6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt6rSR7KeE6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOq1rOuhnOq1rCIsICJzIjogIuq1rOuhnOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leq1rOuhnOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDquIjsspzqtawiLCAicyI6ICLquIjsspzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3quIjsspzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg64W47JuQ6rWsIiwgInMiOiAi64W47JuQ6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt64W47JuQ6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuPhOu0ieq1rCIsICJzIjogIuuPhOu0ieq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuPhOu0ieq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDrj5nrjIDrrLjqtawiLCAicyI6ICLrj5nrjIDrrLjqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3rj5nrjIDrrLjqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg64+Z7J6R6rWsIiwgInMiOiAi64+Z7J6R6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt64+Z7J6R6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOuniO2PrOq1rCIsICJzIjogIuuniO2PrOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeuniO2PrOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDshJzrjIDrrLjqtawiLCAicyI6ICLshJzrjIDrrLjqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3shJzrjIDrrLjqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7ISc7LSI6rWsIiwgInMiOiAi7ISc7LSI6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7ISc7LSI6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyEseuPmeq1rCIsICJzIjogIuyEseuPmeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyEseuPmeq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDshLHrtoHqtawiLCAicyI6ICLshLHrtoHqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3shLHrtoHqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7Iah7YyM6rWsIiwgInMiOiAi7Iah7YyM6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7Iah7YyM6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOyWkeyynOq1rCIsICJzIjogIuyWkeyynOq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeyWkeyynOq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDsmIHrk7Htj6zqtawiLCAicyI6ICLsmIHrk7Htj6zqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3smIHrk7Htj6zqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7Jqp7IKw6rWsIiwgInMiOiAi7Jqp7IKw6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7Jqp7IKw6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOydgO2Pieq1rCIsICJzIjogIuydgO2Pieq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4LeydgO2Pieq1rC8ifSwgeyJuIjogIuyEnOyauO2KueuzhOyLnCDsooXroZzqtawiLCAicyI6ICLsooXroZzqtawiLCAiZCI6ICLshJzsmrgiLCAidSI6ICIv67aA64+Z7IKwLeyEnOyauC3sooXroZzqtawvIn0sIHsibiI6ICLshJzsmrjtirnrs4Tsi5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi7ISc7Jq4IiwgInUiOiAiL+u2gOuPmeyCsC3shJzsmrgt7KSR6rWsLyJ9LCB7Im4iOiAi7ISc7Jq47Yq567OE7IucIOykkeuekeq1rCIsICJzIjogIuykkeuekeq1rCIsICJkIjogIuyEnOyauCIsICJ1IjogIi/rtoDrj5nsgrAt7ISc7Jq4Leykkeuekeq1rC8ifSwgeyJuIjogIuyEuOyihe2KueuzhOyekOy5mOyLnCIsICJzIjogIuyEuOyihe2KueuzhOyekOy5mOyLnCIsICJkIjogIuyEuOyihSIsICJ1IjogIi/rtoDrj5nsgrAt7IS47KKFLeyEuOyihe2KueuzhOyekOy5mOyLnC8ifSwgeyJuIjogIuyauOyCsOq0keyXreyLnCDrgqjqtawiLCAicyI6ICLrgqjqtawiLCAiZCI6ICLsmrjsgrAiLCAidSI6ICIv67aA64+Z7IKwLeyauOyCsC3rgqjqtawvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg64+Z6rWsIiwgInMiOiAi64+Z6rWsIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt64+Z6rWsLyJ9LCB7Im4iOiAi7Jq47IKw6rSR7Jet7IucIOu2geq1rCIsICJzIjogIuu2geq1rCIsICJkIjogIuyauOyCsCIsICJ1IjogIi/rtoDrj5nsgrAt7Jq47IKwLeu2geq1rC8ifSwgeyJuIjogIuyauOyCsOq0keyXreyLnCDsmrjso7zqtbAiLCAicyI6ICLsmrjso7zqtbAiLCAiZCI6ICLsmrjsgrAiLCAidSI6ICIv67aA64+Z7IKwLeyauOyCsC3smrjso7zqtbAvIn0sIHsibiI6ICLsmrjsgrDqtJHsl63si5wg7KSR6rWsIiwgInMiOiAi7KSR6rWsIiwgImQiOiAi7Jq47IKwIiwgInUiOiAiL+u2gOuPmeyCsC3smrjsgrAt7KSR6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOqwle2ZlOq1sCIsICJzIjogIuqwle2ZlOq1sCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeqwle2ZlOq1sC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDqsoDri6jqtawiLCAicyI6ICLqsoDri6jqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3qsoDri6jqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg6rOE7JaR6rWsIiwgInMiOiAi6rOE7JaR6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt6rOE7JaR6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOuCqOuPmeq1rCIsICJzIjogIuuCqOuPmeq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeuCqOuPmeq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDrr7jstpTtmYDqtawiLCAicyI6ICLrr7jstpTtmYDqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3rr7jstpTtmYDqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg67aA7Y+J6rWsIiwgInMiOiAi67aA7Y+J6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt67aA7Y+J6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOyEnO2VtOq1rCIsICJzIjogIuyEnO2VtOq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeyEnO2VtOq1rC8ifSwgeyJuIjogIuyduOyynOq0keyXreyLnCDsl7DsiJjqtawiLCAicyI6ICLsl7DsiJjqtawiLCAiZCI6ICLsnbjsspwiLCAidSI6ICIv67aA64+Z7IKwLeyduOyynC3sl7DsiJjqtawvIn0sIHsibiI6ICLsnbjsspzqtJHsl63si5wg7JiB7KKF6rWsIiwgInMiOiAi7JiB7KKF6rWsIiwgImQiOiAi7J247LKcIiwgInUiOiAiL+u2gOuPmeyCsC3snbjsspwt7JiB7KKF6rWsLyJ9LCB7Im4iOiAi7J247LKc6rSR7Jet7IucIOygnOusvO2PrOq1rCIsICJzIjogIuygnOusvO2PrOq1rCIsICJkIjogIuyduOyynCIsICJ1IjogIi/rtoDrj5nsgrAt7J247LKcLeygnOusvO2PrOq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqsJXsp4TqtbAiLCAicyI6ICLqsJXsp4TqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qsJXsp4TqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rOg7Z2l6rWwIiwgInMiOiAi6rOg7Z2l6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rOg7Z2l6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOqzoeyEseq1sCIsICJzIjogIuqzoeyEseq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeqzoeyEseq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDqtJHsgrDqtawiLCAicyI6ICLqtJHsgrDqtawiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3qtJHsgrDqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg6rSR7JaR7IucIiwgInMiOiAi6rSR7JaR7IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt6rSR7JaR7IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOq1rOuhgOq1sCIsICJzIjogIuq1rOuhgOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Leq1rOuhgOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDrgpjso7zsi5wiLCAicyI6ICLrgpjso7zsi5wiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3rgpjso7zsi5wvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg64Ko6rWsIiwgInMiOiAi64Ko6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt64Ko6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOuLtOyWkeq1sCIsICJzIjogIuuLtOyWkeq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeuLtOyWkeq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDrj5nqtawiLCAicyI6ICLrj5nqtawiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3rj5nqtawvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg66qp7Y+s7IucIiwgInMiOiAi66qp7Y+s7IucIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt66qp7Y+s7IucLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOustOyViOq1sCIsICJzIjogIuustOyViOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeustOyViOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDrs7TshLHqtbAiLCAicyI6ICLrs7TshLHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3rs7TshLHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg67aB6rWsIiwgInMiOiAi67aB6rWsIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt67aB6rWsLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyEnOq1rCIsICJzIjogIuyEnOq1rCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyEnOq1rC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsiJzsspzsi5wiLCAicyI6ICLsiJzsspzsi5wiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3siJzsspzsi5wvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7Iug7JWI6rWwIiwgInMiOiAi7Iug7JWI6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7Iug7JWI6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyXrOyImOyLnCIsICJzIjogIuyXrOyImOyLnCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyXrOyImOyLnC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsmIHqtJHqtbAiLCAicyI6ICLsmIHqtJHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3smIHqtJHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7JiB7JWU6rWwIiwgInMiOiAi7JiB7JWU6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7JiB7JWU6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOyZhOuPhOq1sCIsICJzIjogIuyZhOuPhOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeyZhOuPhOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDsnqXshLHqtbAiLCAicyI6ICLsnqXshLHqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3snqXshLHqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7J6l7Z2l6rWwIiwgInMiOiAi7J6l7Z2l6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7J6l7Z2l6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIOynhOuPhOq1sCIsICJzIjogIuynhOuPhOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8LeynhOuPhOq1sC8ifSwgeyJuIjogIuyghOuCqOq0keyjvO2Gte2Vqe2KueuzhOyLnCDtlajtj4nqtbAiLCAicyI6ICLtlajtj4nqtbAiLCAiZCI6ICLsoITrgqjqtJHso7wiLCAidSI6ICIv67aA64+Z7IKwLeyghOuCqOq0keyjvC3tlajtj4nqtbAvIn0sIHsibiI6ICLsoITrgqjqtJHso7zthrXtlantirnrs4Tsi5wg7ZW064Ko6rWwIiwgInMiOiAi7ZW064Ko6rWwIiwgImQiOiAi7KCE64Ko6rSR7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soITrgqjqtJHso7wt7ZW064Ko6rWwLyJ9LCB7Im4iOiAi7KCE64Ko6rSR7KO87Ya17ZWp7Yq567OE7IucIO2ZlOyInOq1sCIsICJzIjogIu2ZlOyInOq1sCIsICJkIjogIuyghOuCqOq0keyjvCIsICJ1IjogIi/rtoDrj5nsgrAt7KCE64Ko6rSR7KO8Le2ZlOyInOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDqs6DssL3qtbAiLCAicyI6ICLqs6DssL3qtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3qs6DssL3qtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg6rWw7IKw7IucIiwgInMiOiAi6rWw7IKw7IucIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt6rWw7IKw7IucLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOq5gOygnOyLnCIsICJzIjogIuq5gOygnOyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeq5gOygnOyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDrgqjsm5Dsi5wiLCAicyI6ICLrgqjsm5Dsi5wiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3rgqjsm5Dsi5wvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg66y07KO86rWwIiwgInMiOiAi66y07KO86rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt66y07KO86rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOu2gOyViOq1sCIsICJzIjogIuu2gOyViOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeu2gOyViOq1sC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsiJzssL3qtbAiLCAicyI6ICLsiJzssL3qtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3siJzssL3qtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7JmE7KO86rWwIiwgInMiOiAi7JmE7KO86rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7JmE7KO86rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOydteyCsOyLnCIsICJzIjogIuydteyCsOyLnCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeydteyCsOyLnC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsnoTsi6TqtbAiLCAicyI6ICLsnoTsi6TqtbAiLCAiZCI6ICLsoITrtoEiLCAidSI6ICIv67aA64+Z7IKwLeyghOu2gS3snoTsi6TqtbAvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7J6l7IiY6rWwIiwgInMiOiAi7J6l7IiY6rWwIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7J6l7IiY6rWwLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOyghOyjvOyLnCDrjZXsp4TqtawiLCAicyI6ICLsoITso7zsi5wg642V7KeE6rWsIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7KCE7KO87IucLeuNleynhOq1rC8ifSwgeyJuIjogIuyghOu2ge2KueuzhOyekOy5mOuPhCDsoITso7zsi5wg7JmE7IKw6rWsIiwgInMiOiAi7KCE7KO87IucIOyZhOyCsOq1rCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeyghOyjvOyLnC3smYTsgrDqtawvIn0sIHsibiI6ICLsoITrtoHtirnrs4TsnpDsuZjrj4Qg7KCV7J2N7IucIiwgInMiOiAi7KCV7J2N7IucIiwgImQiOiAi7KCE67aBIiwgInUiOiAiL+u2gOuPmeyCsC3soITrtoEt7KCV7J2N7IucLyJ9LCB7Im4iOiAi7KCE67aB7Yq567OE7J6Q7LmY64+EIOynhOyViOq1sCIsICJzIjogIuynhOyViOq1sCIsICJkIjogIuyghOu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7KCE67aBLeynhOyViOq1sC8ifSwgeyJuIjogIuygnOyjvO2KueuzhOyekOy5mOuPhCDshJzqt4Dtj6zsi5wiLCAicyI6ICLshJzqt4Dtj6zsi5wiLCAiZCI6ICLsoJzso7wiLCAidSI6ICIv67aA64+Z7IKwLeygnOyjvC3shJzqt4Dtj6zsi5wvIn0sIHsibiI6ICLsoJzso7ztirnrs4TsnpDsuZjrj4Qg7KCc7KO87IucIiwgInMiOiAi7KCc7KO87IucIiwgImQiOiAi7KCc7KO8IiwgInUiOiAiL+u2gOuPmeyCsC3soJzso7wt7KCc7KO87IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOqzhOujoeyLnCIsICJzIjogIuqzhOujoeyLnCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeqzhOujoeyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDqs7Xso7zsi5wiLCAicyI6ICLqs7Xso7zsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3qs7Xso7zsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg6riI7IKw6rWwIiwgInMiOiAi6riI7IKw6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt6riI7IKw6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOuFvOyCsOyLnCIsICJzIjogIuuFvOyCsOyLnCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeuFvOyCsOyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDri7nsp4Tsi5wiLCAicyI6ICLri7nsp4Tsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3ri7nsp4Tsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg67O066C57IucIiwgInMiOiAi67O066C57IucIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt67O066C57IucLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOu2gOyXrOq1sCIsICJzIjogIuu2gOyXrOq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeu2gOyXrOq1sC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDshJzsgrDsi5wiLCAicyI6ICLshJzsgrDsi5wiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3shJzsgrDsi5wvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7ISc7LKc6rWwIiwgInMiOiAi7ISc7LKc6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7ISc7LKc6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyVhOyCsOyLnCIsICJzIjogIuyVhOyCsOyLnCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLeyVhOyCsOyLnC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDsmIjsgrDqtbAiLCAicyI6ICLsmIjsgrDqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3smIjsgrDqtbAvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7LKc7JWI7IucIOuPmeuCqOq1rCIsICJzIjogIuyynOyViOyLnCDrj5nrgqjqtawiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3sspzslYjsi5wt64+Z64Ko6rWsLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIOyynOyViOyLnCDshJzrtoHqtawiLCAicyI6ICLsspzslYjsi5wg7ISc67aB6rWsIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7LKc7JWI7IucLeyEnOu2geq1rC8ifSwgeyJuIjogIuy2qeyyreuCqOuPhCDssq3slpHqtbAiLCAicyI6ICLssq3slpHqtbAiLCAiZCI6ICLstqnrgqgiLCAidSI6ICIv67aA64+Z7IKwLey2qeuCqC3ssq3slpHqtbAvIn0sIHsibiI6ICLstqnssq3rgqjrj4Qg7YOc7JWI6rWwIiwgInMiOiAi7YOc7JWI6rWwIiwgImQiOiAi7Lap64KoIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrgqgt7YOc7JWI6rWwLyJ9LCB7Im4iOiAi7Lap7LKt64Ko64+EIO2ZjeyEseq1sCIsICJzIjogIu2ZjeyEseq1sCIsICJkIjogIuy2qeuCqCIsICJ1IjogIi/rtoDrj5nsgrAt7Lap64KoLe2ZjeyEseq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDqtLTsgrDqtbAiLCAicyI6ICLqtLTsgrDqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3qtLTsgrDqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg64uo7JaR6rWwIiwgInMiOiAi64uo7JaR6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt64uo7JaR6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOuztOydgOq1sCIsICJzIjogIuuztOydgOq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeuztOydgOq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsmIHrj5nqtbAiLCAicyI6ICLsmIHrj5nqtbAiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3smIHrj5nqtbAvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7Jil7LKc6rWwIiwgInMiOiAi7Jil7LKc6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7Jil7LKc6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOydjOyEseq1sCIsICJzIjogIuydjOyEseq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeydjOyEseq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDsoJzsspzsi5wiLCAicyI6ICLsoJzsspzsi5wiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3soJzsspzsi5wvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7Kad7Y+J6rWwIiwgInMiOiAi7Kad7Y+J6rWwIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7Kad7Y+J6rWwLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOynhOyynOq1sCIsICJzIjogIuynhOyynOq1sCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeynhOyynOq1sC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDssq3so7zsi5wg7IOB64u56rWsIiwgInMiOiAi7LKt7KO87IucIOyDgeuLueq1rCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyyreyjvOyLnC3sg4Hri7nqtawvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7LKt7KO87IucIOyEnOybkOq1rCIsICJzIjogIuyyreyjvOyLnCDshJzsm5DqtawiLCAiZCI6ICLstqnrtoEiLCAidSI6ICIv67aA64+Z7IKwLey2qeu2gS3ssq3so7zsi5wt7ISc7JuQ6rWsLyJ9LCB7Im4iOiAi7Lap7LKt67aB64+EIOyyreyjvOyLnCDssq3sm5DqtawiLCAicyI6ICLssq3so7zsi5wg7LKt7JuQ6rWsIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7LKt7KO87IucLeyyreybkOq1rC8ifSwgeyJuIjogIuy2qeyyreu2geuPhCDssq3so7zsi5wg7Z2l642V6rWsIiwgInMiOiAi7LKt7KO87IucIO2dpeuNleq1rCIsICJkIjogIuy2qeu2gSIsICJ1IjogIi/rtoDrj5nsgrAt7Lap67aBLeyyreyjvOyLnC3tnaXrjZXqtawvIn0sIHsibiI6ICLstqnssq3rtoHrj4Qg7Lap7KO87IucIiwgInMiOiAi7Lap7KO87IucIiwgImQiOiAi7Lap67aBIiwgInUiOiAiL+u2gOuPmeyCsC3stqnrtoEt7Lap7KO87IucLyJ9XTsKCmZ1bmN0aW9uIGluaXRGaW5kZXIoKXsKICB2YXIgcT0kKCdycScpLCBib3g9JCgnZnJlcycpOwogIGlmKCFxfHwhYm94fHwhd2luZG93LlJJRFgpIHJldHVybjsKICB2YXIgY3VyPS0xLCByb3dzPVtdOwogIHZhciBkcmF3PWZ1bmN0aW9uKCl7CiAgICB2YXIgdj1xLnZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpOwogICAgaWYoIXYpeyBib3guaGlkZGVuPXRydWU7IGJveC5pbm5lckhUTUw9Jyc7IHJldHVybjsgfQogICAgcm93cz1SSURYLmZpbHRlcihmdW5jdGlvbihyKXsKICAgICAgcmV0dXJuIHIubi50b0xvd2VyQ2FzZSgpLmluZGV4T2Yodik+PTAgfHwgci5zLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih2KT49MDsKICAgIH0pLnNsaWNlKDAsOCk7CiAgICBpZighcm93cy5sZW5ndGgpewogICAgICBib3guaW5uZXJIVE1MPSc8ZGl2IGNsYXNzPSJub25lIj7ssL7ripQg7KeA7Jet7J20IOyXhuyKteuLiOuLpDwvZGl2Pic7IGJveC5oaWRkZW49ZmFsc2U7IHJldHVybjsKICAgIH0KICAgIGN1cj0tMTsKICAgIGJveC5pbm5lckhUTUw9cm93cy5tYXAoZnVuY3Rpb24ocixpKXsKICAgICAgcmV0dXJuICc8YSBocmVmPSInK3IudSsnIiBkYXRhLWk9IicraSsnIj48Yj4nK3IucysnPC9iPjxzcGFuPicrci5kKyc8L3NwYW4+PC9hPic7CiAgICB9KS5qb2luKCcnKTsKICAgIGJveC5oaWRkZW49ZmFsc2U7CiAgfTsKICBxLmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JyxkcmF3KTsKICBxLmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJyxkcmF3KTsKICBxLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLGZ1bmN0aW9uKGUpewogICAgdmFyIGE9Ym94LnF1ZXJ5U2VsZWN0b3JBbGwoJ2EnKTsKICAgIGlmKGUua2V5PT09J0Fycm93RG93bid8fGUua2V5PT09J0Fycm93VXAnKXsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICBpZighYS5sZW5ndGgpIHJldHVybjsKICAgICAgY3VyPShjdXIrKGUua2V5PT09J0Fycm93RG93bic/MTotMSkrYS5sZW5ndGgpJWEubGVuZ3RoOwogICAgICBhLmZvckVhY2goZnVuY3Rpb24oeCxpKXt4LmNsYXNzTGlzdC50b2dnbGUoJ29uJyxpPT09Y3VyKTt9KTsKICAgICAgYVtjdXJdLnNjcm9sbEludG9WaWV3KHtibG9jazonbmVhcmVzdCd9KTsKICAgIH0gZWxzZSBpZihlLmtleT09PSdFbnRlcicpewogICAgICBpZihjdXI+PTAmJmFbY3VyXSl7IGUucHJldmVudERlZmF1bHQoKTsgbG9jYXRpb24uaHJlZj1hW2N1cl0uZ2V0QXR0cmlidXRlKCdocmVmJyk7IH0KICAgICAgZWxzZSBpZihhLmxlbmd0aCl7IGUucHJldmVudERlZmF1bHQoKTsgbG9jYXRpb24uaHJlZj1hWzBdLmdldEF0dHJpYnV0ZSgnaHJlZicpOyB9CiAgICB9IGVsc2UgaWYoZS5rZXk9PT0nRXNjYXBlJyl7IGJveC5oaWRkZW49dHJ1ZTsgcS5ibHVyKCk7IH0KICB9KTsKICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oZSl7CiAgICBpZighZS50YXJnZXQuY2xvc2VzdCgnLnRwaC1maW5kZXInKSkgYm94LmhpZGRlbj10cnVlOwogIH0pOwp9CjsKdmFyIG1hcCwgbGF5ZXIsIG1hcmtlcnM9W107CmZ1bmN0aW9uIGluQXJlYShpdCwgcmFuZ2UpewogIGlmKCFyYW5nZSkgcmV0dXJuIHRydWU7CiAgdmFyIHA9cmFuZ2Uuc3BsaXQoJy0nKSwgbG89K3BbMF0sIGhpPStwWzFdOwogIHJldHVybiBpdC5kcy5zb21lKGZ1bmN0aW9uKHope3JldHVybiB6LmE+bG8gJiYgei5hPD1oaTt9KTsKfQpmdW5jdGlvbiBmaWx0ZXJlZCgpewogIHZhciByPXMoJ3JnJyksIGE9cygnYXJlYScpOwogIHJldHVybiBELml0ZW1zLmZpbHRlcihmdW5jdGlvbih4KXsKICAgIGlmKHIgJiYgeC5yZyE9PXIpIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBpbkFyZWEoeCxhKTsKICB9KTsKfQovKiDtjpjsnbTroZzrk5zsnZgg6riI7JWh7J2AIOyghOu2gCAqKuunjOybkCDri6jsnIQqKuuLpC4g7JuQIOuLqOychOuhnCDssKnqsIHtlZjsp4Ag66eQIOqygy4gKi8KZnVuY3Rpb24gbWFuKG4peyByZXR1cm4gTWF0aC5yb3VuZChuKS50b0xvY2FsZVN0cmluZygna28tS1InKSsn66eMJzsgfQpmdW5jdGlvbiBlb2sobil7CiAgbj1NYXRoLnJvdW5kKG4pOwogIHZhciBlPU1hdGguZmxvb3Iobi8xMDAwMCksIG09biUxMDAwMDsKICByZXR1cm4gKChlPyBlKyfslrUgJzonJykgKyAobT8gbS50b0xvY2FsZVN0cmluZygna28tS1InKSsn66eMJzonJykpIHx8ICcwJzsKfQpmdW5jdGlvbiBjb2xvckZvcih2LCBsbywgaGkpewogIGlmKGhpPD1sbykgcmV0dXJuICcjOWNhM2FmJzsKICB2YXIgdD0odi1sbykvKGhpLWxvKTsKICB2YXIgY3M9Z2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwogIGlmKHQ+MC42NikgcmV0dXJuIGNzLmdldFByb3BlcnR5VmFsdWUoJy0tczInKS50cmltKCl8fCcjZWI2ODM0JzsKICBpZih0PDAuMzMpIHJldHVybiBjcy5nZXRQcm9wZXJ0eVZhbHVlKCctLXMxJykudHJpbSgpfHwnIzJhNzhkNic7CiAgcmV0dXJuICcjOWNhM2FmJzsKfQpmdW5jdGlvbiByZW5kZXIoKXsKICB2YXIgbGlzdD1maWx0ZXJlZCgpLCBzb3J0PXMoJ3NvcnQnKTsKICB2YXIgcHBzPWxpc3QubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB4LnBwO30pLmZpbHRlcihCb29sZWFuKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEtYjt9KTsKICAvKiDstZzsoIDCt+y1nOqzoOuhnCDsg4kg67KU7JyE66W8IOyeoeycvOuptCDstIjqs6DqsIAg64uo7KeAIOuqhyDqs7PsnbQg7Iqk7LyA7J287J2EIOuLpCDrqLnslrQg7KCE67aAIO2MjOuel+qyjCDrgpjsmKjri6QuCiAgICAgMTB+OTAg67aE7JyE66GcIOyekOultOuptCDsg4nsnbQg7Iuk7KCc66GcIOqwiOumsOuLpC4gKi8KICB2YXIgbG89cHBzLmxlbmd0aD8gcHBzW01hdGguZmxvb3IocHBzLmxlbmd0aCowLjEpXSA6IDAsCiAgICAgIGhpPXBwcy5sZW5ndGg/IHBwc1tNYXRoLmZsb29yKHBwcy5sZW5ndGgqMC45KV0gOiAwOwogIGlmKGhpPD1sbyl7IGxvPXBwc1swXXx8MDsgaGk9cHBzW3Bwcy5sZW5ndGgtMV18fDA7IH0KICBDTE89bG87IENIST1oaTsKICBsaXN0LnNvcnQoZnVuY3Rpb24oYSxiKXsKICAgIGlmKHNvcnQ9PT0ncHAnKSByZXR1cm4gYi5wcC1hLnBwOwogICAgaWYoc29ydD09PSdwcGEnKSByZXR1cm4gYS5wcC1iLnBwOwogICAgaWYoc29ydD09PSdsYXN0JykgcmV0dXJuIChhLmxhc3Q8Yi5sYXN0PzE6LTEpOwogICAgcmV0dXJuIGIuY250LWEuY250OwogIH0pOwogIGlmKGxheWVyKSBsYXllci5jbGVhckxheWVycygpOwogIFBFTkQ9W107CiAgbWFya2Vycz1bXTsgdmFyIGJvdW5kcz1bXTsKICBsaXN0LmZvckVhY2goZnVuY3Rpb24oeCl7CiAgICB2YXIgY29sPWNvbG9yRm9yKHgucHAsbG8saGkpOwogICAgdmFyIGljPUwuZGl2SWNvbih7Y2xhc3NOYW1lOid0cGgtcGluJywgaWNvblNpemU6WzYyLDI2XSwgaWNvbkFuY2hvcjpbMzEsMjZdLAogICAgICBodG1sOic8YiBzdHlsZT0iYmFja2dyb3VuZDonK2NvbCsnIj4nK21hbih4LnBwKSsnPC9iPjxpIHN0eWxlPSJjb2xvcjonK2NvbCsnIj48L2k+J30pOwogICAgdmFyIHJvd3M9eC5kcy5zbGljZSgwLDUpLm1hcChmdW5jdGlvbih6KXsKICAgICAgcmV0dXJuIHouZCsnIMK3ICcrei5hKyfjjqEgwrcgJysoei5mP3ouZisn7Li1IMK3ICc6JycpK2Vvayh6LnApOwogICAgfSkuam9pbignPGJyPicpOwogICAgdmFyIG09TC5tYXJrZXIoW3gubGF0LHgubG9uXSx7aWNvbjppYyxwdjp4LnBwfSk7ICBQRU5ELnB1c2gobSk7CiAgICBtLmJpbmRQb3B1cCgnPGI+Jyt4Lm4rJzwvYj48YnI+Jyt4LnJnKycgJyt4LmRnCiAgICAgICsnPGJyPu2PieuLuSAnK21hbih4LnBwKSsn7JuQIMK3IOqxsOuemCAnK3guY250KyfqsbQ8YnI+PGhyIHN0eWxlPSJtYXJnaW46NnB4IDA7Ym9yZGVyOm5vbmU7Ym9yZGVyLXRvcDoxcHggc29saWQgI2RkZCI+JwogICAgICArcm93cyk7CiAgICBtYXJrZXJzLnB1c2gobSk7IGJvdW5kcy5wdXNoKFt4LmxhdCx4Lmxvbl0pOwogIH0pOwogIGFkZEFsbChsYXllciwgUEVORCk7CiAgZml0VG8obWFwLCBib3VuZHMsIDE1KTsKICB2YXIgaD0nJzsKICBsaXN0LnNsaWNlKDAsNjApLmZvckVhY2goZnVuY3Rpb24oeCxpKXsKICAgIGgrPSc8ZGl2IGNsYXNzPSJ0cGgtcm93IiBkYXRhLWk9IicraSsnIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3gubisnPHNwYW4gY2xhc3M9InRwaC10YWciPicreC5jbnQrJ+qxtDwvc3Bhbj48L2I+JwogICAgICArJzxzcGFuPicreC5yZysnICcreC5kZysnIMK3IOy1nOq3vCAnK3gubGFzdCsnPC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+Jytlb2soeC5hdmcpKyc8ZW0+7Y+J64u5ICcrbWFuKHgucHApKyc8L2VtPjwvZGl2PjwvZGl2Pic7CiAgfSk7CiAgJCgnbGlzdCcpLmlubmVySFRNTCA9IGggfHwgJzxkaXYgY2xhc3M9InRwaC1yb3ciPjxkaXYgY2xhc3M9Im5tIj7sobDqsbTsl5Ag66ee64qUIOuLqOyngOqwgCDsl4bsirXri4jri6QuPC9kaXY+PC9kaXY+JzsKICAkKCdsaXN0JykucXVlcnlTZWxlY3RvckFsbCgnLnRwaC1yb3dbZGF0YS1pXScpLmZvckVhY2goZnVuY3Rpb24ocil7CiAgICByLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICB2YXIgbT1tYXJrZXJzWytyLmRhdGFzZXQuaV07IGlmKCFtKSByZXR1cm47CiAgICAgIG1hcC5zZXRWaWV3KG0uZ2V0TGF0TG5nKCksMTYpOyBtLm9wZW5Qb3B1cCgpOwogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndHBoLW1hcCcpLnNjcm9sbEludG9WaWV3KHtiZWhhdmlvcjonc21vb3RoJyxibG9jazonY2VudGVyJ30pOwogICAgfSk7CiAgfSk7CiAgdmFyIHRvdD1saXN0LnJlZHVjZShmdW5jdGlvbihhLHgpe3JldHVybiBhK3guY250O30sMCk7CiAgc2V0KCdzdGF0dXMnLCBsaXN0Lmxlbmd0aC50b0xvY2FsZVN0cmluZygna28tS1InKSsn6rCcIOuLqOyngCDCtyDqsbDrnpggJyt0b3QudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtCcKICAgICAgKyAocHBzLmxlbmd0aD8gJyDCtyDtj4nri7nqsIAgJyttYW4obG8pKyd+JyttYW4oaGkpIDogJycpKTsKfQpmdW5jdGlvbiBpbml0KCl7CiAgbWFwPUwubWFwKCd0cGgtbWFwJyx7c2Nyb2xsV2hlZWxab29tOmZhbHNlfSkuc2V0VmlldyhbMzcuNTUsMTI3LjBdLDExKTsKICBMLnRpbGVMYXllcignaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLm9yZy97en0ve3h9L3t5fS5wbmcnLAogICAge21heFpvb206MTksIGF0dHJpYnV0aW9uOicmY29weTsgT3BlblN0cmVldE1hcCd9KS5hZGRUbyhtYXApOwogIG1hcC5vbignY2xpY2snLGZ1bmN0aW9uKCl7bWFwLnNjcm9sbFdoZWVsWm9vbS5lbmFibGUoKTt9KTsKICBsYXllcj1jbHVzdGVyR3JvdXAobWFuLGZ1bmN0aW9uKHYpe3JldHVybiBjb2xvckZvcih2LENMTyxDSEkpO30pLmFkZFRvKG1hcCk7CiAgWydyZycsJ2FyZWEnLCdzb3J0J10uZm9yRWFjaChmdW5jdGlvbihpZCl7dmFyIGU9JChpZCk7IGlmKGUpIGUuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJyxyZW5kZXIpO30pOwogIHJlbmRlcigpOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgbWFwLmludmFsaWRhdGVTaXplKGZhbHNlKTsgcmVuZGVyKCk7IH0sIDI1MCk7CiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGZ1bmN0aW9uKCl7IG1hcC5pbnZhbGlkYXRlU2l6ZShmYWxzZSk7IH0pOwp9CgovKiDilIDilIAg64yA7Iuc67O065OcOiDsp4Dsl60g7Iuc7IS4IC8g7IOB7Iq5wrftlZjrnb0gLyDstpTsnbQg4pSA4pSAICovCnZhciBzY29wZT0nJzsKdmFyIG5hdj17bGV2ZWw6J3NpZG8nLCBzaWRvOm51bGwsIHJlZ2lvbjpudWxsLCBkb25nOm51bGx9OyAgIC8qIOuTnOumtOuLpOyatCDsg4Htg5wgKi8KCmZ1bmN0aW9uIHJhbmtSb3dzKCl7IHJldHVybiBELnJlZ2lvbnMuZmlsdGVyKGZ1bmN0aW9uKHIpeyByZXR1cm4gIXNjb3BlIHx8IHIubWV0cm87IH0pOyB9CgovKiDsi5zCt+uPhCDri6jsnITroZwg66y26riwIOKAlCDqsbDrnpjqsbTsiJgg6rCA7KSR7Y+J6reg7J206528IOuLqOyInO2Pieq3oOuztOuLpCDsoJXtmZXtlZjri6QgKi8KZnVuY3Rpb24gc2lkb1Jvd3MoKXsKICB2YXIgbT17fTsKICByYW5rUm93cygpLmZvckVhY2goZnVuY3Rpb24ocil7CiAgICB2YXIgaz1yLnNkfHxyLnJnOwogICAgdmFyIG89bVtrXXx8KG1ba109e3NkOmssY250OjAsc3VtOjAscHN1bTowLHBjbnQ6MCxuOjB9KTsKICAgIG8uY250Kz1yLmNudDsgby5zdW0rPXIucHAqci5jbnQ7IG8ubisrOwogICAgaWYoci5jaGczIT1udWxsKXsgby5wc3VtKz1yLmNoZzMqci5jbnQ7IG8ucGNudCs9ci5jbnQ7IH0KICB9KTsKICByZXR1cm4gT2JqZWN0LmtleXMobSkubWFwKGZ1bmN0aW9uKGspewogICAgdmFyIG89bVtrXTsKICAgIHJldHVybiB7bmFtZTpvLnNkLCBwcDpNYXRoLnJvdW5kKG8uc3VtL28uY250KSwgY250Om8uY250LCBuOm8ubiwKICAgICAgICAgICAgY2hnOm8ucGNudD8gTWF0aC5yb3VuZChvLnBzdW0vby5wY250KjEwKS8xMCA6IG51bGx9OwogIH0pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5wcC1hLnBwO30pOwp9CmZ1bmN0aW9uIGNoZ0h0bWwoYyl7CiAgaWYoYz09bnVsbCkgcmV0dXJuICcnOwogIHJldHVybiAnPGVtIGNsYXNzPSInKyhjPjA/J3VwJzpjPDA/J2RuJzonJykrJyI+JysoYz4wPyfilrInOmM8MD8n4pa8Jzon4oCUJykrJyAnK01hdGguYWJzKGMpKyclPC9lbT4nOwp9CmZ1bmN0aW9uIGNydW1iKCl7CiAgdmFyIGg9JzxidXR0b24gZGF0YS1sdj0ic2lkbyI+7KCE6rWtPC9idXR0b24+JzsKICBpZihuYXYuc2lkbykgaCs9JzxzcGFuPuKAujwvc3Bhbj48YnV0dG9uIGRhdGEtbHY9InJlZ2lvbiI+JytuYXYuc2lkbysnPC9idXR0b24+JzsKICBpZihuYXYucmVnaW9uKSBoKz0nPHNwYW4+4oC6PC9zcGFuPjxidXR0b24gZGF0YS1sdj0iZG9uZyI+JytuYXYucmVnaW9uLnJlcGxhY2UobmF2LnNpZG8sJycpLnRyaW0oKSsnPC9idXR0b24+JzsKICBpZihuYXYuZG9uZykgaCs9JzxzcGFuPuKAujwvc3Bhbj48Yj4nK25hdi5kb25nKyc8L2I+JzsKICAkKCdjcnVtYicpLmlubmVySFRNTD1oOwogICQoJ2NydW1iJykucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uJykuZm9yRWFjaChmdW5jdGlvbihiKXsKICAgIGIuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLGZ1bmN0aW9uKCl7CiAgICAgIHZhciBsdj1iLmRhdGFzZXQubHY7CiAgICAgIGlmKGx2PT09J3NpZG8nKXtuYXY9e2xldmVsOidzaWRvJyxzaWRvOm51bGwscmVnaW9uOm51bGwsZG9uZzpudWxsfTt9CiAgICAgIGVsc2UgaWYobHY9PT0ncmVnaW9uJyl7bmF2LmxldmVsPSdyZWdpb24nO25hdi5yZWdpb249bnVsbDtuYXYuZG9uZz1udWxsO30KICAgICAgZWxzZSB7bmF2LmxldmVsPSdkb25nJztuYXYuZG9uZz1udWxsO30KICAgICAgZHJhd1JhbmsoKTsKICAgIH0pOwogIH0pOwp9CmZ1bmN0aW9uIGRyYXdSYW5rKCl7CiAgY3J1bWIoKTsKICB2YXIgcm93cywgdGl0bGUsIGNoYXJ0Q2F0cywgY2hhcnRWYWxzLCBsZWFmPWZhbHNlOwogIGlmKG5hdi5sZXZlbD09PSdzaWRvJyl7CiAgICByb3dzPXNpZG9Sb3dzKCkubWFwKGZ1bmN0aW9uKHgpe3JldHVybiB7a2V5OngubmFtZSxsYWJlbDp4Lm5hbWUsCiAgICAgIHN1Yjon7Iuc6rWw6rWsICcreC5uKyfqs7Mgwrcg6rGw656YICcreC5jbnQudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtCcscHA6eC5wcCxjaGc6eC5jaGd9O30pOwogIH0gZWxzZSBpZihuYXYubGV2ZWw9PT0ncmVnaW9uJyl7CiAgICByb3dzPXJhbmtSb3dzKCkuZmlsdGVyKGZ1bmN0aW9uKHIpe3JldHVybiAoci5zZHx8ci5yZyk9PT1uYXYuc2lkbzt9KQogICAgICAuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiLnBwLWEucHA7fSkKICAgICAgLm1hcChmdW5jdGlvbihyKXtyZXR1cm4ge2tleTpyLnJnLGxhYmVsOnIucmcucmVwbGFjZShuYXYuc2lkbywnJykudHJpbSgpfHxyLnJnLAogICAgICAgIHN1Yjon6rGw656YICcrci5jbnQudG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtCDCtyDrspXsoJXrj5kgJysoci5kb25nc3x8W10pLmxlbmd0aCsn6rOzJywKICAgICAgICBwcDpyLnBwLGNoZzpyLmNoZzN9O30pOwogIH0gZWxzZSBpZihuYXYubGV2ZWw9PT0nZG9uZycpewogICAgdmFyIHJlZz1yYW5rUm93cygpLmZpbHRlcihmdW5jdGlvbihyKXtyZXR1cm4gci5yZz09PW5hdi5yZWdpb247fSlbMF07CiAgICByb3dzPSgocmVnJiZyZWcuZG9uZ3MpfHxbXSkubWFwKGZ1bmN0aW9uKGQpe3JldHVybiB7a2V5OmQuZGcsbGFiZWw6ZC5kZywKICAgICAgc3ViOifqsbDrnpggJytkLmNudCsn6rG0JyxwcDpkLnBwLGNoZzpkLmNoZ307fSk7CiAgfSBlbHNlIHsKICAgIGxlYWY9dHJ1ZTsKICAgIHJvd3M9W107CiAgfQogIGlmKCFsZWFmKXsKICAgIHZhciB0b3A9cm93cy5zbGljZSgwLDE4KTsKICAgIHN0YWNrQ2hhcnQoJ3JhbmtjaGFydCcsIHRvcC5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIubGFiZWw7fSksCiAgICAgIFt7bmFtZTon7Y+J64u56rCAJyxjbHM6J3MxJyxkYXRhOnRvcC5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIucHA7fSl9XSwgbWFuKTsKICAgIHZhciBoPScnOwogICAgcm93cy5mb3JFYWNoKGZ1bmN0aW9uKHIsaSl7CiAgICAgIGgrPSc8ZGl2IGNsYXNzPSJ0cGgtcm93IiBkYXRhLWtleT0iJytyLmtleS5yZXBsYWNlKC8iL2csJycpKyciPjxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+JytyLmxhYmVsKyc8L2I+PHNwYW4+JytyLnN1YisnPC9zcGFuPjwvZGl2PicKICAgICAgICArJzxkaXYgY2xhc3M9InByIj4nK21hbihyLnBwKStjaGdIdG1sKHIuY2hnKSsnPC9kaXY+JwogICAgICAgICsnPGRpdiBjbGFzcz0iZ28iPuKAujwvZGl2PjwvZGl2Pic7CiAgICB9KTsKICAgICQoJ3JhbmtsaXN0JykuaW5uZXJIVE1MPWh8fCc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9Im5tIj7rjbDsnbTthLDqsIAg7JeG7Iq164uI64ukLjwvZGl2PjwvZGl2Pic7CiAgICAkKCdyYW5rbGlzdCcpLnF1ZXJ5U2VsZWN0b3JBbGwoJy50cGgtcm93W2RhdGEta2V5XScpLmZvckVhY2goZnVuY3Rpb24ocm93KXsKICAgICAgcm93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICAgIHZhciBrPXJvdy5kYXRhc2V0LmtleTsKICAgICAgICBpZihuYXYubGV2ZWw9PT0nc2lkbycpewogICAgICAgICAgLyog7Iuc64+E66W8IOqzoOultOuptCDqt7gg7Iuc64+EIOyghOyaqSDtjpjsnbTsp4DroZwg67O064K464ukLgogICAgICAgICAgICAg7KCE6rWtIO2OmOydtOyngCDtlZjrgpjsl5AgOOunjOyXrCDqsbTsnYQg64ukIOyLpOydhCDsiJgg7JeG7Ja0IOyLnOuPhOuzhOuhnCDrgpjriKAg65KA64ukLiAqLwogICAgICAgICAgbG9jYXRpb24uaHJlZj0nL+u2gOuPmeyCsC0nK2VuY29kZVVSSUNvbXBvbmVudChrKSsnLyc7IHJldHVybjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZihuYXYubGV2ZWw9PT0ncmVnaW9uJyl7IG5hdi5yZWdpb249azsgbmF2LmxldmVsPSdkb25nJzsgfQogICAgICAgIGVsc2UgeyBuYXYuZG9uZz1rOyBzaG93RGVhbHMoKTsgcmV0dXJuOyB9CiAgICAgICAgZHJhd1JhbmsoKTsKICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1wYW5lPSJyYW5rIl0nKS5zY3JvbGxJbnRvVmlldyh7YmVoYXZpb3I6J3Ntb290aCcsYmxvY2s6J3N0YXJ0J30pOwogICAgICB9KTsKICAgIH0pOwogIH0KfQovKiDrspXsoJXrj5kg7YG066atIOKGkiDsi6TsoJwg6rGw656YIOuCtOyXrSAqLwpmdW5jdGlvbiBzaG93RGVhbHMoKXsKICBjcnVtYigpOwogIHZhciBsaXN0PUQuaXRlbXMuZmlsdGVyKGZ1bmN0aW9uKHgpe3JldHVybiB4LnJnPT09bmF2LnJlZ2lvbiAmJiB4LmRnPT09bmF2LmRvbmc7fSk7CiAgdmFyIGRlYWxzPVtdOwogIGxpc3QuZm9yRWFjaChmdW5jdGlvbihjKXsgKGMuZHN8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHopewogICAgZGVhbHMucHVzaCh7bjpjLm4sYTp6LmEsZjp6LmYscDp6LnAsZDp6LmR9KTsgfSk7IH0pOwogIGRlYWxzLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5kPGIuZD8xOi0xO30pOwogIHZhciBoPScnOwogIGRlYWxzLnNsaWNlKDAsMTIwKS5mb3JFYWNoKGZ1bmN0aW9uKHopewogICAgaCs9JzxkaXYgY2xhc3M9InRwaC1kZWFsIj48c3BhbiBjbGFzcz0iZCI+Jyt6LmQrJzwvc3Bhbj4nCiAgICAgICsnPHNwYW4gY2xhc3M9Im4iPicrei5uKyc8L3NwYW4+JwogICAgICArJzxzcGFuIGNsYXNzPSJhIj4nK3ouYSsn446hPC9zcGFuPicKICAgICAgKyc8c3BhbiBjbGFzcz0iZiI+Jysoei5mP3ouZisn7Li1JzonJykrJzwvc3Bhbj4nCiAgICAgICsnPHNwYW4gY2xhc3M9InAiPicrZW9rKHoucCkrJzwvc3Bhbj48L2Rpdj4nOwogIH0pOwogICQoJ3JhbmtsaXN0JykuaW5uZXJIVE1MID0gaCB8fAogICAgJzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0ibm0iPuydtCDrspXsoJXrj5nsnYAg7KeA64+EIO2RnOuzuCjsg4HsnIQg64uo7KeAKeyXkCDsl4bslrQg6rCc67OEIOuCtOyXreydtCDsl4bsirXri4jri6QuIOychCDthrXqs4TripQg7KCE7IiYIOq4sOykgOyeheuLiOuLpC48L2Rpdj48L2Rpdj4nOwogICQoJ3JhbmtjaGFydCcpLmlubmVySFRNTD0nJzsKfQp2YXIgbW92ZVNwYW49MzsgICAvKiDsi5zqtbDqtawg7ZWcIOuLrCDtkZzrs7jsnYAg7IiY7IutIOqxtOydtOudvCDquLDrs7jsnYAgM+qwnOyblCDrrLbsnYzsnbTri6QgKi8KZnVuY3Rpb24gbW92ZVJvdyhyLGksZmllbGQpewogIHZhciB2PXJbZmllbGRdOwogIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+JytyLnJnKyc8L2I+PHNwYW4+7Y+J64u5ICcrbWFuKHIucHApKycgwrcg6rGw656YICcrci5jbnQrJ+qxtDwvc3Bhbj48L2Rpdj4nCiAgICArJzxkaXYgY2xhc3M9InByIj48ZW0gY2xhc3M9IicrKHY+MD8ndXAnOidkbicpKyciPicrKHY+MD8nKyc6JycpK3YrJyU8L2VtPjwvZGl2PjwvZGl2Pic7Cn0KZnVuY3Rpb24gZHJhd01vdmUoKXsKICB2YXIgZmllbGQgPSBtb3ZlU3Bhbj09PTM/ICdjaGczJyA6ICdjaGcnOwogIC8qIOuzgOuPmeuloOydgCDtjIzsnbTsjazsl5DshJwg67KV7KCV64+ZIOuLqOychOuhnCDrrLbslrQg64K06rOgLCDqt7zqsbDqsIAg7JaH7Jy866m0IG51bGwg66GcIOu5hOybjCDrkZTri6QuCiAgICAg7Jes6riw7ISc64qUIOqwkuydtCDsnojripQg7KeA7Jet66eMIOykhCDshLjsmrDrqbQg65Cc64ukLiAqLwogIHZhciByb3dzPUQucmVnaW9ucy5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIHJbZmllbGRdIT1udWxsO30pOwogIHZhciB1cD1yb3dzLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBiW2ZpZWxkXS1hW2ZpZWxkXTt9KS5zbGljZSgwLDEwKTsKICB2YXIgZG49cm93cy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVtmaWVsZF0tYltmaWVsZF07fSkuc2xpY2UoMCwxMCk7CiAgdmFyIG5vbmU9JzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0ibm0iPuu5hOq1kO2VoCDrjbDsnbTthLDqsIAg7JeG7Iq164uI64ukLjwvZGl2PjwvZGl2Pic7CiAgJCgndXAnKS5pbm5lckhUTUw9dXAubWFwKGZ1bmN0aW9uKHIsaSl7cmV0dXJuIG1vdmVSb3cocixpLGZpZWxkKTt9KS5qb2luKCcnKXx8bm9uZTsKICAkKCdkbicpLmlubmVySFRNTD1kbi5tYXAoZnVuY3Rpb24ocixpKXtyZXR1cm4gbW92ZVJvdyhyLGksZmllbGQpO30pLmpvaW4oJycpfHxub25lOwogIHNldCgnbW92ZWhpbnQnLCAobW92ZVNwYW49PT0zPyAoRC53aW4zfHwnM+qwnOyblCDruYTqtZAg67aI6rCAJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEQucHJldisnIOKGkiAnK0QuY3VyKycgKO2RnOuzuOydtCDslofsirXri4jri6QpJykKICAgICAgKyAnIMK3IOuyleygleuPmeuzhCDspJHsnIQg7Y+J64u56rCAIOuzgOuPmeydhCDqsbDrnpjqsbTsiJjroZwg6rCA7KSRIO2Pieq3oCDCtyDqt7zqsbDqsIAg7Lap67aE7ZWcICcKICAgICAgKyByb3dzLmxlbmd0aCArICfqs7Prp4wg7ZGc7IucJyk7CgogIC8qIOqxsOuemOufiSDquInrs4Ag4oCUIOyLoOqzoOqwgCDri6Qg65Ok7Ja07JioIOuLrOuBvOumrOunjCDruYTqtZDtlZzri6QgKi8KICB2YXIgdm9sPUQucmVnaW9ucy5maWx0ZXIoZnVuY3Rpb24ocil7cmV0dXJuIHIudm9sMyE9bnVsbDt9KTsKICBzZXQoJ3ZvbGhpbnQnLCBELnZiYXNlICYmIEQudmN1cgogICAgPyBELnZiYXNlKycg4oaSICcrRC52Y3VyKycg6rGw656Y6rG07IiYIOuzgO2ZlCDCtyDsi6Dqs6DqsIAg66qo65GQIOuTpOyWtOyYqCDri6zrgbzrpqzrp4wg67mE6rWQ7ZWp64uI64ukJwogICAgOiAn67mE6rWQ7ZWgIOygleyCsCDsmYTro4zsm5TsnbQg7JWE7KeBIOu2gOyhse2VqeuLiOuLpCcpOwogIHZhciB2dT12b2wuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudm9sMy1hLnZvbDM7fSkuc2xpY2UoMCw4KTsKICB2YXIgdmQ9dm9sLnNsaWNlKCkuc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLnZvbDMtYi52b2wzO30pLnNsaWNlKDAsOCk7CiAgdmFyIHZyb3c9ZnVuY3Rpb24ocixpKXsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3IucmcrJzwvYj48c3Bhbj4nK3IudmJjbnQrJ+qxtCDihpIgJytyLnZjbnQrJ+qxtDwvc3Bhbj48L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0icHIiPjxlbSBjbGFzcz0iJysoci52b2wzPjA/J3VwJzonZG4nKSsnIj4nKyhyLnZvbDM+MD8nKyc6JycpK3Iudm9sMysnJTwvZW0+PC9kaXY+PC9kaXY+JzsKICB9OwogICQoJ3ZvbHVwJykuaW5uZXJIVE1MPXZ1Lm1hcCh2cm93KS5qb2luKCcnKXx8bm9uZTsKICAkKCd2b2xkbicpLmlubmVySFRNTD12ZC5tYXAodnJvdykuam9pbignJyl8fG5vbmU7CgogIC8qIOyLoOqzoOqwgCDqsr3si6AgKi8KICB2YXIgaD0nJzsKICAoRC5oaXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCxpKXsKICAgIGgrPSc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicreC5uKycgPHNtYWxsIHN0eWxlPSJjb2xvcjp2YXIoLS1mYWludCk7Zm9udC13ZWlnaHQ6NDAwIj4nK3guYSsn446hPC9zbWFsbD48L2I+JwogICAgICArJzxzcGFuPicreC5yZysnICcreC5kZysnIMK3ICcreC5kKycgwrcg7KeB7KCEIOy1nOqzoCAnK2Vvayh4Lm9sZCkrJzwvc3Bhbj48L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0icHIiPicrZW9rKHgucCkrJzxlbSBjbGFzcz0idXAiPisnK3gudXArJyU8L2VtPjwvZGl2PjwvZGl2Pic7CiAgfSk7CiAgJCgnaGknKS5pbm5lckhUTUw9aHx8JzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0ibm0iPuq4sOykgOyblOyXkCDsi6Dqs6DqsIAg6rK97IugIOqxsOuemOqwgCDsl4bsirXri4jri6QuPC9kaXY+PC9kaXY+JzsKICB2YXIgYXJvdz1mdW5jdGlvbih4LGkpewogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicreC5yZysnPC9iPjxzcGFuPuy1nOq3vCAy6rCc7JuUICcreC5uLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQg7KSRICcKICAgICAgK3guYy50b0xvY2FsZVN0cmluZygna28tS1InKSsn6rG0PC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+Jyt4LnJhdGUrJyU8L2Rpdj48L2Rpdj4nOwogIH07CiAgJCgnZGlyZWN0JykuaW5uZXJIVE1MPShELmRpcmVjdHx8W10pLm1hcChhcm93KS5qb2luKCcnKXx8bm9uZTsKICAkKCdjb3JwJykuaW5uZXJIVE1MPShELmNvcnB8fFtdKS5tYXAoYXJvdykuam9pbignJyl8fG5vbmU7CiAgaWYoRC5hY3RvclRvdCAmJiBELmFjdG9yVG90Lm4pewogICAgdmFyIHQ9RC5hY3RvclRvdDsKICAgIHNldCgnYWN0aGludCcsJ+y1nOq3vCAy6rCc7JuUIOyghOq1rSAnK3Qubi50b0xvY2FsZVN0cmluZygna28tS1InKSsn6rG0IOq4sOykgCDCtyDsp4HqsbDrnpggJwogICAgICArKHQuZC90Lm4qMTAwKS50b0ZpeGVkKDEpKyclIMK3IOuyleyduMK36rO16rO1IOunpOyImCAnKyh0LmMvdC5uKjEwMCkudG9GaXhlZCgxKSsnJScpOwogIH0KICAkKCdoaXJhbmsnKS5pbm5lckhUTUw9KEQuaGlSYW5rfHxbXSkubWFwKGZ1bmN0aW9uKHgsaSl7CiAgICByZXR1cm4gJzxkaXYgY2xhc3M9InRwaC1yb3cgbGVhZiI+PGRpdiBjbGFzcz0icmsiPicrKGkrMSkrJzwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJubSI+PGI+Jyt4LnJnKyc8L2I+PHNwYW4+7LWc6re8IDLqsJzsm5Qg6rGw656YIOykkSAnK3gucmF0ZSsnJeqwgCDsp4HsoIQg7LWc6rOg6rCAIOqyveyLoDwvc3Bhbj48L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0icHIiPicreC5uKyfqsbQ8L2Rpdj48L2Rpdj4nOwogIH0pLmpvaW4oJycpfHxub25lOwoKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zcGFuXScpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgICBiLm9uY2xpY2s9ZnVuY3Rpb24oKXsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtc3Bhbl0nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt9KTsKICAgICAgYi5jbGFzc0xpc3QuYWRkKCdvbicpOyBtb3ZlU3Bhbj0rYi5kYXRhc2V0LnNwYW47IGRyYXdNb3ZlKCk7CiAgICB9OwogIH0pOwp9CmZ1bmN0aW9uIGRyYXdKZW9uc2UoKXsKICB2YXIgbm9uZT0nPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJubSI+7ZGc67O47J20IOu2gOyhse2VqeuLiOuLpC48L2Rpdj48L2Rpdj4nOwogIHZhciBqbT1ELmptb250aHN8fFtdOwogIHNldCgnamhpbnQnLCAoam0ubGVuZ3RoPyBqbVswXSsnficram1bam0ubGVuZ3RoLTFdIDogJycpKycg7Iug6recIOyghOyEuOqzhOyVvSDquLDspIAgwrcg64uo7KeAwrfrqbTsoIHrs4TroZwg7Ked7KeA7Ja0IOqzhOyCsCcpOwogIHZhciBTPUQuamVvbnNlfHx7fSwgaD0nJzsKICBbWyfsoITqta0nLCfsoITqta0nXSxbJ+yImOuPhOq2jCcsJ+yImOuPhOq2jCddLFsn7ISc7Jq4Jywn7ISc7Jq4J11dLmZvckVhY2goZnVuY3Rpb24ocCl7CiAgICB2YXIgdj1TW3BbMF1dOyBpZighdikgcmV0dXJuOwogICAgdmFyIGNscyA9IHYucj49ODA/ICd1cCcgOiB2LnI+PTcwPyAnZmxhdCcgOiAnZG4nOwogICAgaCs9JzxkaXYgY2xhc3M9InRwaC1zdGF0Ij48ZGl2IGNsYXNzPSJrIj4nK3BbMV0rJyDsoITshLjqsIDsnKg8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0ibiI+Jyt2LnIrJyU8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0iZCAnK2NscysnIj44MCUg7J207IOBIOuLqOyngCAnK3YucmlzaysnJTwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJzbSI+67mE6rWQIOqwgOuKpSAnK3Yubi50b0xvY2FsZVN0cmluZygna28tS1InKSsn7IyNPC9kaXY+PC9kaXY+JzsKICB9KTsKICAkKCdqc3RhdHMnKS5pbm5lckhUTUw9aDsKCiAgdmFyIHJyb3c9ZnVuY3Rpb24oeCxpKXsKICAgIHZhciBjbHMgPSB4LnI+PTgwPyAndXAnIDogeC5yPj03MD8gJycgOiAnZG4nOwogICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9InJrIj4nKyhpKzEpKyc8L2Rpdj4nCiAgICAgICsnPGRpdiBjbGFzcz0ibm0iPjxiPicreC5yZysnPC9iPjxzcGFuPuuLqOyngMK366m07KCBICcreC5uKyfsjI0gwrcgODAlIOydtOyDgSAnK3gucmlzaysn6rOzPC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+PGVtIGNsYXNzPSInK2NscysnIj4nK3gucisnJTwvZW0+PC9kaXY+PC9kaXY+JzsKICB9OwogICQoJ2poaWdoJykuaW5uZXJIVE1MPShELmplb25zZVJnbnx8W10pLm1hcChycm93KS5qb2luKCcnKXx8bm9uZTsKICAkKCdqbG93JykuaW5uZXJIVE1MPShELmplb25zZVNhZmV8fFtdKS5tYXAocnJvdykuam9pbignJyl8fG5vbmU7CgogICQoJ3Jpc2t5JykuaW5uZXJIVE1MPShELnJpc2t5fHxbXSkubWFwKGZ1bmN0aW9uKHgsaSl7CiAgICB2YXIgbGFiID0geC5yPj05MD8gJ+qzoOychO2XmCcgOiAn7JyE7ZeYJzsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3gubisnIDxzbWFsbCBzdHlsZT0iY29sb3I6dmFyKC0tZmFpbnQpO2ZvbnQtd2VpZ2h0OjQwMCI+Jyt4LmErJ+OOoTwvc21hbGw+JwogICAgICArJzxzcGFuIGNsYXNzPSJ0cGgtdGFnIHJpc2siPicrbGFiKyc8L3NwYW4+PC9iPicKICAgICAgKyc8c3Bhbj4nK3gucmcrJyDCtyDrp6Trp6QgJytlb2soeC5zKSsnIC8g7KCE7IS4ICcrZW9rKHguaikrJyDCtyDtkZzrs7ggJyt4Lm5zKyfCtycreC5uaisn6rG0PC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+PGVtIGNsYXNzPSJ1cCI+Jyt4LnIrJyU8L2VtPjwvZGl2PjwvZGl2Pic7CiAgfSkuam9pbignJyl8fCc8ZGl2IGNsYXNzPSJ0cGgtcm93IGxlYWYiPjxkaXYgY2xhc3M9Im5tIj44MCUg7J207IOB7J24IOuLqOyngOqwgCDsl4bsirXri4jri6QuPC9kaXY+PC9kaXY+JzsKCiAgJCgncmVuZXcnKS5pbm5lckhUTUw9KEQucmVuZXd8fFtdKS5tYXAoZnVuY3Rpb24oeCxpKXsKICAgIHJldHVybiAnPGRpdiBjbGFzcz0idHBoLXJvdyBsZWFmIj48ZGl2IGNsYXNzPSJyayI+JysoaSsxKSsnPC9kaXY+JwogICAgICArJzxkaXYgY2xhc3M9Im5tIj48Yj4nK3gucmcrJzwvYj48c3Bhbj7qsLHsi6AgJyt4Lm4udG9Mb2NhbGVTdHJpbmcoJ2tvLUtSJykrJ+qxtCDCtyDspJHsnIQg7J247IOBICcKICAgICAgKyh4LnVwPjA/JysnOicnKSt4LnVwKyclPC9zcGFuPjwvZGl2PicKICAgICAgKyc8ZGl2IGNsYXNzPSJwciI+PGVtIGNsYXNzPSJ1cCI+Jyt4LmNhcCsnJTwvZW0+PC9kaXY+PC9kaXY+JzsKICB9KS5qb2luKCcnKXx8bm9uZTsKfQpmdW5jdGlvbiBkcmF3VHJlbmQoKXsKICBpZihELnRyZW5kICYmIEQudHJlbmQubGVuZ3RoPjEpewogICAgbGluZUNoYXJ0KCd0cmVuZCcsIEQudHJlbmQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0Lm0uc2xpY2UoMikrKHQuc2V0dGxlZD8nJzonKicpO30pLAogICAgICBbe25hbWU6J+yLpOqxsOuemCDspJHsnIQg7Y+J64u56rCAJyxjbHM6J3MxJyxkYXRhOkQudHJlbmQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBwO30pfSwKICAgICAgIHtuYW1lOifqsIDqsqnsp4DsiJgo6rGw656Y6rWs7ISxIOuztOyglSknLGNsczonczInLGRhdGE6RC50cmVuZC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuaWR4O30pfV0sIG1hbik7CiAgICBzdGFja0NoYXJ0KCd2b2wnLCBELnRyZW5kLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5tLnNsaWNlKDIpKyh0LnNldHRsZWQ/Jyc6JyonKTt9KSwKICAgICAgW3tuYW1lOifqsbDrnpjrn4knLGNsczonczMnLGRhdGE6RC50cmVuZC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQuY250O30pfV0sCiAgICAgIGZ1bmN0aW9uKG4pe3JldHVybiBNYXRoLnJvdW5kKG4pLnRvTG9jYWxlU3RyaW5nKCdrby1LUicpKyfqsbQnO30pOwogIH0KICBpZihELmJhbmRzICYmIEQuYmFuZHMubGVuZ3RoKQogICAgc3RhY2tDaGFydCgnYmFuZCcsIEQuYmFuZHMubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLmI7fSksCiAgICAgIFt7bmFtZTon7Y+J64u56rCAJyxjbHM6J3MzJyxkYXRhOkQuYmFuZHMubWFwKGZ1bmN0aW9uKGIpe3JldHVybiBiLnBwO30pfV0sIG1hbik7CiAgLyog7KeA7JetIMOXIOuptOyggeuMgCDqtZDssKjtkZwgKi8KICBpZihELmNyb3NzICYmIEQuY3Jvc3MubGVuZ3RoKXsKICAgIHZhciBuYW1lcz1ELmJhbmROYW1lc3x8W107CiAgICB2YXIgaD0nPHRoZWFkPjx0cj48dGg+7KeA7JetPC90aD4nK25hbWVzLm1hcChmdW5jdGlvbihiKXtyZXR1cm4gJzx0aD4nK2IrJzwvdGg+Jzt9KS5qb2luKCcnKSsnPC90cj48L3RoZWFkPjx0Ym9keT4nOwogICAgRC5jcm9zcy5mb3JFYWNoKGZ1bmN0aW9uKHIpewogICAgICBoKz0nPHRyPjx0ZD4nK3IucmcrJzwvdGQ+JytyLnZhbHMubWFwKGZ1bmN0aW9uKHYpewogICAgICAgIHJldHVybiAnPHRkPicrKHY9PW51bGw/J+KAlCc6bWFuKHYpKSsnPC90ZD4nO30pLmpvaW4oJycpKyc8L3RyPic7CiAgICB9KTsKICAgICQoJ2Nyb3NzJykuaW5uZXJIVE1MPWgrJzwvdGJvZHk+JzsKICB9Cn0KZnVuY3Rpb24gaW5pdFRhYnMoKXsKICB2YXIgZHJhd249e307CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC10YWInKS5mb3JFYWNoKGZ1bmN0aW9uKGIpewogICAgYi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsZnVuY3Rpb24oKXsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnRwaC10YWInKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt9KTsKICAgICAgYi5jbGFzc0xpc3QuYWRkKCdvbicpOwogICAgICB2YXIgdD1iLmRhdGFzZXQudDsKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtcGFuZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHApeyBwLmhpZGRlbiA9IHAuZGF0YXNldC5wYW5lIT09dDsgfSk7CiAgICAgIGlmKCFkcmF3blt0XSl7CiAgICAgICAgaWYodD09PSdyYW5rJykgZHJhd1JhbmsoKTsKICAgICAgICBpZih0PT09J21vdmUnKSBkcmF3TW92ZSgpOwogICAgICAgIGlmKHQ9PT0ndHJlbmQnKSBkcmF3VHJlbmQoKTsKICAgICAgICBpZih0PT09J2plb25zZScpIGRyYXdKZW9uc2UoKTsKICAgICAgICBkcmF3blt0XT0xOwogICAgICB9CiAgICAgIGlmKHQ9PT0nbWFwJykgc2V0VGltZW91dChmdW5jdGlvbigpeyBtYXAuaW52YWxpZGF0ZVNpemUoZmFsc2UpOyB9LDUwKTsKICAgIH0pOwogIH0pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXNjb3BlXScpLmZvckVhY2goZnVuY3Rpb24oYil7CiAgICBiLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJyxmdW5jdGlvbigpewogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1zY29wZV0nKS5mb3JFYWNoKGZ1bmN0aW9uKHgpe3guY2xhc3NMaXN0LnJlbW92ZSgnb24nKTt9KTsKICAgICAgYi5jbGFzc0xpc3QuYWRkKCdvbicpOyBzY29wZT1iLmRhdGFzZXQuc2NvcGU7IGRyYXdSYW5rKCk7CiAgICB9KTsKICB9KTsKfQp2YXIgcm9vdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudHBoLXBhZ2UnKTsKaW5pdFRoZW1lKHJvb3QpOwppbml0RmluZGVyKCk7CmluaXRUYWJzKCk7CmlmKHdpbmRvdy5MKSBpbml0KCk7IGVsc2Ugd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLGluaXQpOwo=