시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 157 46 31 23.134%

문제

QR 코드는 위와 같이 최소 21*21개의 단위 픽셀로 이루어진 정방형의 흑백 픽셀 매트릭스이다.

각각의 픽셀은 나타내는 내용에 따라 위치 감지 패턴(과녁 모양의 작은 정사각형), 타이밍 패턴(교차하는 흑,백의 선), 서식 정보(작은 점들의 집합), 데이터와 오류 수정 코드(회색 픽셀 8개로 이루어진 블럭들), 그리고 더 큰 QR코드의 경우 보정 패턴, 버전 정보 등으로 나뉜다.

21*21의 최소 크기 QR 코드는 26개의 데이터 및 오류 수정 코드를 가지는데, 이는 다시 19개의 데이터 코드와 7개의 오류 수정 코드로 나뉜다.

어떤 정보를 데이터 코드로 만들 때는 10비트당 3개의 숫자, 11비트당 2개의 알파뉴메릭 문자, 8비트당 1개의 기타 8비트 문자, 13비트당 1개의 한자(Kanji)를 저장하며 다음 세 가지 정보를 함께 저장한다.

  • 데이터의 종류(mode)
  • 문자의 수(character count)
  • 문자 정보

mode bit는 QR 코드의 크기에 따라 달라질 수 있으며, 문자 수에 대한 정보(count bits)는 데이터의 타입에 따라 다른 비트 수를 가진다. 

아래는 21*21 크기 QR 코드에서의 mode bit와 count bit에 대한 표이다.

Mode Name       Mode Bits    Count Bits
Numeric 0001 10
Alphanumeric 0010 9
8 bit byte 0100 8
Kanji 1000 8
Termination 0000 0

숫자를 표현하기 위해 mode bit로 0001을 사용하며, 그 뒤 10개의 비트는 숫자의 갯수를 나타낼 것이다.

터미네이션 코드로 데이터는 종료되며 만일 데이터 코드를 저장할 공간이 없다면 터미네이션 코드는 생략되거나 불완전한 형태일 수도 있다.

터미네이션 코드 이후로 등장하는 불완전한 코드 조각은 비어있는 부분을 0으로 채우게 되며, 그 이후로 남는 빈 공간에는 11101100과 00010001을 교대로 채운다. 이에 대한 예시는 문제 설명 마지막 부분에서 자세히 볼 수 있다.

수로 이루어진 문자열은 한 번에 3자리씩 저장된다. 마지막 남은 문자열이 2글자일 경우엔 7bit로, 1글자일 경우엔 4bit로 저장한다. 아래는 예시이다.

12345678 → 123 456 78 → 0001111011 0111001000 1001110

이 앞에 mode 정보(0001)와 count bit(8 = 0000001000)가 들어간다.

0001 0000001000 0001111011 0111001000 1001110

알파뉴메릭 문자열은 다음 45개 문자들을 포함하고 있는 문자열이다.(<SP>는 스페이스바를 나타낸다)

0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ<SP>\$%*+-./:

각각의 알파벳은 0부터 44의 수로 대응되며, 알파뉴메릭 두 문자는 다음과 같이 인코딩된다.

<first char code> * 45 + <second char code>

만일 한 개의 문자가 남는다면, 이것은 6 비트로 인코딩된다.

예시는 다음과 같다.

AC-42 → (10, 12, 41, 4, 2) → 10*45 + 12 = 462, 41*45 + 4 = 1849, 2 →  00111001110 11100111001 000010

이 앞에 mode bit(0010) 과 count bit(5 = 000000101) 가 삽입되어 총 비트 수는 4+9+11+11+6 bit가 된다.

8비트 문자/숫자와 한자를 저장하는 다음의 과정은 비교적 간단하다. 8비트 문자는 어떤 8비트의 코드로, 한자는 어떤 13비트의 코드로 저장될 것이며 그 문자를 찾는 대신 그저 16진수로 코드를 표현해내기만 하면 된다.

예시는 다음과 같다.

8 bit 0x45 0x92 0xa3 → 01000101 10010010 10100011

이 앞에 mode bit와 count bit가 삽입되어 다음과 같이 된다

0100 00000011 01000101 10010010 10100011

총 비트 수는 4 + 8 + 8 + 8 + 8이 된다.

한자에 대한 예시는 다음과 같다.

Kanji 0x1ABC 0x0345 → 1000 00000010 1101010111100 0001101000101

총 비트 수는 4 + 8 + 13 + 13이다.

19개의 데이터 블럭엔 각각의 블럭당 위의 규칙에 따라 변환한 코드를 8비트 단위로 끊어서 표현한 이진수 묶음이 입력된다. 모든 정보를 저장한 뒤엔 터미네이트 코드가 주어지며, 터미네이트 코드의 mode bit까지 표현한 후 불완전한 데이터 블럭이 생겼다면 남은 부분을 0으로 채운다. 이 때 데이터 블럭이 19개 미만이라면 11101100과 00010001을 교대로 삽입하여 19개의 데이터 블럭을 만든다.

예시는 다음과 같다.

0001 0000001000 0001111011 0111001000 1001110

0010 000000101 00111001110 11100111001 000010

0100 00000011 01000101 10010010 10100011

0000 000000 11101100 00010001 11101100

위의 코드는 다음과 같이 19개의 데이터 블럭에 인코딩된다.

00010000 00100000 01111011 01110010 00100111 00010000 00010100 11100111 01110011 10010000 10010000 00001101 00010110 01001010 10001100 00000000 11101100 00010001 11101100

→ HEX 10207B72271014E77390900D164A8C00EC11EC

위의 마지막 결과처럼 16진수로 인코딩된 19개의 데이터 블럭이 주어지면 그에 따라 원래 정보를 복원하는 프로그램을 작성하라.

입력

첫 줄에 테스트 케이스의 수 P가 주어진다 (1 ≤ P ≤ 1000)

각각의 테스트 케이스는 한 줄로 표현된 19개의 데이터 블럭이며, 38개의 16진수 문자가 주어진다. 0~9, A~F 외의 잘못된 문자가 주어지는 경우는 없다.

출력

각각의 테스트 케이스에 대해 다음과 같이 한 줄을 출력한다.

  • 문자의 수를 나타내는 정수 하나
  • 공백으로 구분하여, 디코딩된 문자열

만일 출력 문자열이 출력 가능한 아스키 문자라면(0x20~0x7e) 그대로 출력하면 되며, 다만 예외로 백슬래시( \ )는 \\ 로, #은 \# 으로 출력하면 된다.

출력 불가능한 문자일 경우엔

  • 8bit 문자일 경우 : \xx, x는 16진수로 표현했을 경우의 자리수(예시 : \AE)
  • 13bit 문자일 경우 : #bxxx : b는 0 또는 1, x는 16진수로 표현했을 경우의 자리수(예시 : #13AC)

를 출력하면 된다.

0x20(스페이스바)보다 작거나 0x7e(~)보다 큰 모든 8bit 아스키 문자 혹은 모든 13bit 문자는 출력 불가능한 문자이다.

예제 입력 1

4
10207B72271014E77390900D164A8C00EC11EC
802D5E0D1400EC11EC11EC11EC11EC11EC11EC
20BB1AA65F9FD7DC0ED88C973E15EF533EB0EC
2010B110888D9428D937193B9CEA0D7F45DF68

예제 출력 1

16 12345678AC-42E\92\A3
2 #1ABC#0345
23 HTTP://WWW.ACMGNYR.ORG/
36 3.1415926535897932384626433832795028
W3sicHJvYmxlbV9pZCI6IjI2ODAiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJRUiIsImRlc2NyaXB0aW9uIjoiPHA+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9xci5wbmdcIiBcLz48XC9wPlxyXG5cclxuPHA+UVIgXHVjZjU0XHViNGRjXHViMjk0IFx1YzcwNFx1YzY0MCBcdWFjMTlcdWM3NzQmbmJzcDtcdWNkNWNcdWMxOGMgMjEqMjFcdWFjMWNcdWM3NTggXHViMmU4XHVjNzA0Jm5ic3A7XHVkNTNkXHVjMTQwXHViODVjJm5ic3A7XHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YzgxNVx1YmMyOVx1ZDYxNVx1Yzc1OCBcdWQ3NTFcdWJjMzEgXHVkNTNkXHVjMTQwIFx1YjllNFx1ZDJiOFx1YjlhZFx1YzJhNFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxXHVhYzAxXHVjNzU4IFx1ZDUzZFx1YzE0MFx1Yzc0MCBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHViMGI0XHVjNmE5XHVjNWQwIFx1YjUzMFx1Yjc3YyBcdWM3MDRcdWNlNTggXHVhYzEwXHVjOWMwIFx1ZDMyOFx1ZDEzNChcdWFjZmNcdWIxNDEgXHViYWE4XHVjNTkxXHVjNzU4IFx1Yzc5MVx1Yzc0MCBcdWM4MTVcdWMwYWNcdWFjMDFcdWQ2MTUpLCBcdWQwYzBcdWM3NzRcdWJjMGQgXHVkMzI4XHVkMTM0KFx1YWQ1MFx1Y2MyOFx1ZDU1OFx1YjI5NCBcdWQ3NTEsXHViYzMxXHVjNzU4IFx1YzEyMCksIFx1YzExY1x1YzJkZCBcdWM4MTVcdWJjZjQoXHVjNzkxXHVjNzQwIFx1YzgxMFx1YjRlNFx1Yzc1OCBcdWM5ZDFcdWQ1NjkpLCBcdWIzNzBcdWM3NzRcdWQxMzBcdWM2NDAgXHVjNjI0XHViOTU4IFx1YzIxOFx1YzgxNSBcdWNmNTRcdWI0ZGMoXHVkNjhjXHVjMGM5IFx1ZDUzZFx1YzE0MCA4XHVhYzFjXHViODVjJm5ic3A7XHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0Jm5ic3A7XHViZTE0XHViN2VkXHViNGU0KSwmbmJzcDtcdWFkZjhcdWI5YWNcdWFjZTAgXHViMzU0IFx1ZDA3MCBRUlx1Y2Y1NFx1YjRkY1x1Yzc1OCBcdWFjYmRcdWM2YjAgXHViY2Y0XHVjODE1IFx1ZDMyOFx1ZDEzNCwgXHViYzg0XHVjODA0IFx1YzgxNVx1YmNmNCBcdWI0ZjFcdWM3M2NcdWI4NWMgXHViMDk4XHViMjVjXHViMmU0LjxcL3A+XHJcblxyXG48cD4yMSoyMVx1Yzc1OCBcdWNkNWNcdWMxOGMgXHVkMDZjXHVhZTMwIFFSIFx1Y2Y1NFx1YjRkY1x1YjI5NCAyNlx1YWMxY1x1Yzc1OCBcdWIzNzBcdWM3NzRcdWQxMzAgXHViYzBmIFx1YzYyNFx1Yjk1OCBcdWMyMThcdWM4MTUgXHVjZjU0XHViNGRjXHViOTdjIFx1YWMwMFx1YzljMFx1YjI5NFx1YjM3MCwgXHVjNzc0XHViMjk0IFx1YjJlNFx1YzJkYyAxOVx1YWMxY1x1Yzc1OCBcdWIzNzBcdWM3NzRcdWQxMzAgXHVjZjU0XHViNGRjXHVjNjQwIDdcdWFjMWNcdWM3NTggXHVjNjI0XHViOTU4IFx1YzIxOFx1YzgxNSBcdWNmNTRcdWI0ZGNcdWI4NWMgXHViMDk4XHViMjVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM1YjRcdWI1YTQgXHVjODE1XHViY2Y0XHViOTdjIFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWNmNTRcdWI0ZGNcdWI4NWMgXHViOWNjXHViNGU0Jm5ic3A7XHViNTRjXHViMjk0IDEwXHViZTQ0XHVkMmI4XHViMmY5IDNcdWFjMWNcdWM3NTggXHVjMjJiXHVjNzkwLCAxMVx1YmU0NFx1ZDJiOFx1YjJmOSAyXHVhYzFjXHVjNzU4IFx1YzU0Y1x1ZDMwY1x1YjI3NFx1YmE1NFx1YjlhZCBcdWJiMzhcdWM3OTAsIDhcdWJlNDRcdWQyYjhcdWIyZjkgMVx1YWMxY1x1Yzc1OCBcdWFlMzBcdWQwYzAgOFx1YmU0NFx1ZDJiOCBcdWJiMzhcdWM3OTAsJm5ic3A7MTNcdWJlNDRcdWQyYjhcdWIyZjkgMVx1YWMxY1x1Yzc1OCZuYnNwO1x1ZDU1Y1x1Yzc5MChLYW5qaSlcdWI5N2MgXHVjODAwXHVjN2E1XHVkNTU4XHViYTcwIFx1YjJlNFx1Yzc0YyBcdWMxMzggXHVhYzAwXHVjOWMwIFx1YzgxNVx1YmNmNFx1Yjk3YyBcdWQ1NjhcdWFlZDggXHVjODAwXHVjN2E1XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yzc1OCBcdWM4ODVcdWI5NTgobW9kZSk8XC9saT5cclxuXHQ8bGk+XHViYjM4XHVjNzkwXHVjNzU4IFx1YzIxOChjaGFyYWN0ZXIgY291bnQpPFwvbGk+XHJcblx0PGxpPlx1YmIzOFx1Yzc5MCBcdWM4MTVcdWJjZjQ8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5tb2RlIGJpdFx1YjI5NCZuYnNwO1FSIFx1Y2Y1NFx1YjRkY1x1Yzc1OCBcdWQwNmNcdWFlMzBcdWM1ZDAgXHViNTMwXHViNzdjIFx1YjJlY1x1Yjc3Y1x1YzljOCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWJiMzhcdWM3OTAgXHVjMjE4XHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjQoY291bnQgYml0cylcdWIyOTQgXHViMzcwXHVjNzc0XHVkMTMwXHVjNzU4IFx1ZDBjMFx1Yzc4NVx1YzVkMCBcdWI1MzBcdWI3N2MgXHViMmU0XHViOTc4IFx1YmU0NFx1ZDJiOCBcdWMyMThcdWI5N2MgXHVhYzAwXHVjOWM0XHViMmU0LiZuYnNwOzxcL3A+XHJcblxyXG48cD5cdWM1NDRcdWI3OThcdWIyOTQgMjEqMjEgXHVkMDZjXHVhZTMwIFFSIFx1Y2Y1NFx1YjRkY1x1YzVkMFx1YzExY1x1Yzc1OCBtb2RlIGJpdFx1YzY0MCBjb3VudCBiaXRcdWM1ZDAgXHViMzAwXHVkNTVjIFx1ZDQ1Y1x1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHRhYmxlPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPk1vZGUgTmFtZSAmbmJzcDsgJm5ic3A7ICZuYnNwOzxcL3RoPlxyXG5cdFx0XHQ8dGg+TW9kZSBCaXRzICZuYnNwOyZuYnNwOzxcL3RoPlxyXG5cdFx0XHQ8dGg+Q291bnQgQml0czxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+TnVtZXJpYzxcL3RkPlxyXG5cdFx0XHQ8dGQ+MDAwMTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MTA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+QWxwaGFudW1lcmljPFwvdGQ+XHJcblx0XHRcdDx0ZD4wMDEwPFwvdGQ+XHJcblx0XHRcdDx0ZD45PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjggYml0IGJ5dGU8XC90ZD5cclxuXHRcdFx0PHRkPjAxMDA8XC90ZD5cclxuXHRcdFx0PHRkPjg8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+S2Fuamk8XC90ZD5cclxuXHRcdFx0PHRkPjEwMDA8XC90ZD5cclxuXHRcdFx0PHRkPjg8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+VGVybWluYXRpb248XC90ZD5cclxuXHRcdFx0PHRkPjAwMDA8XC90ZD5cclxuXHRcdFx0PHRkPjA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1YzIyYlx1Yzc5MFx1Yjk3YyBcdWQ0NWNcdWQ2MDRcdWQ1NThcdWFlMzAgXHVjNzA0XHVkNTc0IG1vZGUgYml0XHViODVjIDAwMDFcdWM3NDQgXHVjMGFjXHVjNmE5XHVkNTU4XHViYTcwLCBcdWFkZjggXHViNGE0IDEwXHVhYzFjXHVjNzU4IFx1YmU0NFx1ZDJiOFx1YjI5NCBcdWMyMmJcdWM3OTBcdWM3NTggXHVhYzJmXHVjMjE4XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiYyBcdWFjODNcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDEzMFx1YmJmOFx1YjEyNFx1Yzc3NFx1YzE1OCBcdWNmNTRcdWI0ZGNcdWI4NWMgXHViMzcwXHVjNzc0XHVkMTMwXHViMjk0IFx1Yzg4NVx1YjhjY1x1YjQxOFx1YmE3MCBcdWI5Y2NcdWM3N2MgXHViMzcwXHVjNzc0XHVkMTMwIFx1Y2Y1NFx1YjRkY1x1Yjk3YyBcdWM4MDBcdWM3YTVcdWQ1NjAgXHVhY2Y1XHVhYzA0XHVjNzc0IFx1YzVjNlx1YjJlNFx1YmE3NCBcdWQxMzBcdWJiZjhcdWIxMjRcdWM3NzRcdWMxNTggXHVjZjU0XHViNGRjXHViMjk0IFx1YzBkZFx1YjdiNVx1YjQxOFx1YWM3MFx1YjA5OCBcdWJkODhcdWM2NDRcdWM4MDRcdWQ1NWMgXHVkNjE1XHVkMGRjXHVjNzdjIFx1YzIxOFx1YjNjNCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDEzMFx1YmJmOFx1YjEyNFx1Yzc3NFx1YzE1OCBcdWNmNTRcdWI0ZGMgXHVjNzc0XHVkNmM0XHViODVjIFx1YjRmMVx1YzdhNVx1ZDU1OFx1YjI5NCBcdWJkODhcdWM2NDRcdWM4MDRcdWQ1NWMmbmJzcDtcdWNmNTRcdWI0ZGMgXHVjODcwXHVhYzAxXHVjNzQwJm5ic3A7XHViZTQ0XHVjNWI0XHVjNzg4XHViMjk0IFx1YmQ4MFx1YmQ4NFx1Yzc0NCZuYnNwOzBcdWM3M2NcdWI4NWMgXHVjYzQ0XHVjNmIwXHVhYzhjIFx1YjQxOFx1YmE3MCwgXHVhZGY4IFx1Yzc3NFx1ZDZjNFx1Yjg1YyBcdWIwYThcdWIyOTQgXHViZTQ4IFx1YWNmNVx1YWMwNFx1YzVkMFx1YjI5NCAxMTEwMTEwMFx1YWNmYyAwMDAxMDAwMVx1Yzc0NCBcdWFkNTBcdWIzMDBcdWI4NWMgXHVjYzQ0XHVjNmI0XHViMmU0LiZuYnNwO1x1Yzc3NFx1YzVkMCBcdWIzMDBcdWQ1NWMgXHVjNjA4XHVjMmRjXHViMjk0IFx1YmIzOFx1YzgxYyBcdWMxMjRcdWJhODUgXHViOWM4XHVjOWMwXHViOWM5IFx1YmQ4MFx1YmQ4NFx1YzVkMFx1YzExYyBcdWM3OTBcdWMxMzhcdWQ3ODggXHViY2ZjIFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzIxOFx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzQwIFx1ZDU1YyBcdWJjODhcdWM1ZDAgM1x1Yzc5MFx1YjlhY1x1YzUyOSBcdWM4MDBcdWM3YTVcdWI0MWNcdWIyZTQuIFx1YjljOFx1YzljMFx1YjljOSBcdWIwYThcdWM3NDAgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzc0IDJcdWFlMDBcdWM3OTBcdWM3N2MgXHVhY2JkXHVjNmIwXHVjNWQ0IDdiaXRcdWI4NWMsIDFcdWFlMDBcdWM3OTBcdWM3N2MgXHVhY2JkXHVjNmIwXHVjNWQ0IDRiaXRcdWI4NWMgXHVjODAwXHVjN2E1XHVkNTVjXHViMmU0LiBcdWM1NDRcdWI3OThcdWIyOTQgXHVjNjA4XHVjMmRjXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD48c3Ryb25nPjEyMzQ1Njc4ICZyYXJyOyAxMjMgNDU2IDc4ICZyYXJyOyAwMDAxMTExMDExIDAxMTEwMDEwMDAgMTAwMTExMDxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1YzU1ZVx1YzVkMCBtb2RlIFx1YzgxNVx1YmNmNCgwMDAxKVx1YzY0MCBjb3VudCBiaXQoOCA9IDAwMDAwMDEwMDApXHVhYzAwIFx1YjRlNFx1YzViNFx1YWMwNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+PHN0cm9uZz4wMDAxIDAwMDAwMDEwMDAgMDAwMTExMTAxMSAwMTExMDAxMDAwIDEwMDExMTA8XC9zdHJvbmc+PFwvcD5cclxuXHJcbjxwPlx1YzU0Y1x1ZDMwY1x1YjI3NFx1YmE1NFx1YjlhZCBcdWJiMzhcdWM3OTBcdWM1ZjRcdWM3NDAgXHViMmU0XHVjNzRjIDQ1XHVhYzFjJm5ic3A7XHViYjM4XHVjNzkwXHViNGU0XHVjNzQ0IFx1ZDNlY1x1ZDU2OFx1ZDU1OFx1YWNlMCBcdWM3ODhcdWIyOTQgXHViYjM4XHVjNzkwXHVjNWY0XHVjNzc0XHViMmU0LigmbHQ7U1AmZ3Q7XHViMjk0IFx1YzJhNFx1ZDM5OFx1Yzc3NFx1YzJhNFx1YmMxNFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjhcdWIyZTQpPFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+MDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJmx0O1NQJmd0OzxcL3N0cm9uZz48c3Ryb25nPlxcJCUqKy0uXC86PFwvc3Ryb25nPjxcL3A+XHJcblxyXG48cD5cdWFjMDFcdWFjMDFcdWM3NTggXHVjNTRjXHVkMzBjXHViY2IzXHVjNzQwIDBcdWJkODBcdWQxMzAgNDRcdWM3NTggXHVjMjE4XHViODVjIFx1YjMwMFx1Yzc1MVx1YjQxOFx1YmE3MCwgXHVjNTRjXHVkMzBjXHViMjc0XHViYTU0XHViOWFkIFx1YjQ1MCBcdWJiMzhcdWM3OTBcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWM3NzhcdWNmNTRcdWI1MjlcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+Jmx0O2ZpcnN0IGNoYXIgY29kZSZndDsgKiA0NSArICZsdDtzZWNvbmQgY2hhciBjb2RlJmd0OzxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+XHViOWNjXHVjNzdjIFx1ZDU1YyBcdWFjMWNcdWM3NTggXHViYjM4XHVjNzkwXHVhYzAwIFx1YjBhOFx1YjI5NFx1YjJlNFx1YmE3NCwgXHVjNzc0XHVhYzgzXHVjNzQwIDYgXHViZTQ0XHVkMmI4XHViODVjIFx1Yzc3OFx1Y2Y1NFx1YjUyOVx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjMmRjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+QUMtNDIgJnJhcnI7ICgxMCwgMTIsIDQxLCA0LCAyKSAmcmFycjsgMTAqNDUgKyAxMiA9IDQ2MiwgNDEqNDUgKyA0ID0gMTg0OSwgMiAmcmFycjsgJm5ic3A7MDAxMTEwMDExMTA8XC9zdHJvbmc+PHN0cm9uZz4gMTExMDAxMTEwMDEgMDAwMDEwPFwvc3Ryb25nPjxcL3A+XHJcblxyXG48cD5cdWM3NzQgXHVjNTVlXHVjNWQwIG1vZGUgYml0KDAwMTApIFx1YWNmYyBjb3VudCBiaXQoNSA9IDAwMDAwMDEwMSkgXHVhYzAwIFx1YzBiZFx1Yzc4NVx1YjQxOFx1YzViNCBcdWNkMWQgXHViZTQ0XHVkMmI4IFx1YzIxOFx1YjI5NCA0KzkrMTErMTErNiBiaXRcdWFjMDAgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD44XHViZTQ0XHVkMmI4IFx1YmIzOFx1Yzc5MFwvXHVjMjJiXHVjNzkwXHVjNjQwIFx1ZDU1Y1x1Yzc5MFx1Yjk3YyBcdWM4MDBcdWM3YTVcdWQ1NThcdWIyOTQgXHViMmU0XHVjNzRjXHVjNzU4IFx1YWNmY1x1YzgxNVx1Yzc0MCBcdWJlNDRcdWFkNTBcdWM4MDEgXHVhYzA0XHViMmU4XHVkNTU4XHViMmU0LiZuYnNwOzhcdWJlNDRcdWQyYjggXHViYjM4XHVjNzkwXHViMjk0Jm5ic3A7XHVjNWI0XHViNWE0IDhcdWJlNDRcdWQyYjhcdWM3NTggXHVjZjU0XHViNGRjXHViODVjLCBcdWQ1NWNcdWM3OTBcdWIyOTQgXHVjNWI0XHViNWE0IDEzXHViZTQ0XHVkMmI4XHVjNzU4IFx1Y2Y1NFx1YjRkY1x1Yjg1YyZuYnNwO1x1YzgwMFx1YzdhNVx1YjQyMCBcdWFjODNcdWM3NzRcdWJhNzAgXHVhZGY4IFx1YmIzOFx1Yzc5MFx1Yjk3YyBcdWNjM2VcdWIyOTQgXHViMzAwXHVjMmUwIFx1YWRmOFx1YzgwMCAxNlx1YzljNFx1YzIxOFx1Yjg1YyBcdWNmNTRcdWI0ZGNcdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTc0XHViMGI0XHVhZTMwXHViOWNjIFx1ZDU1OFx1YmE3NCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzYwOFx1YzJkY1x1YjI5NCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHViMmU0LjxcL3A+XHJcblxyXG48cD48c3Ryb25nPjggYml0IDB4NDUgMHg5MiAweGEzICZyYXJyOyAwMTAwMDEwMSAxMDAxMDAxMCAxMDEwMDAxMTxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+XHVjNzc0IFx1YzU1ZVx1YzVkMCBtb2RlIGJpdFx1YzY0MCBjb3VudCBiaXRcdWFjMDAgXHVjMGJkXHVjNzg1XHViNDE4XHVjNWI0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgXHViNDFjXHViMmU0PFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+MDEwMCAwMDAwMDAxMSAwMTAwMDEwMSAxMDAxMDAxMCAxMDEwMDAxMTxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+XHVjZDFkIFx1YmU0NFx1ZDJiOCBcdWMyMThcdWIyOTQgNCArIDggKyA4ICsgOCArIDhcdWM3NzQgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWQ1NWNcdWM3OTBcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YzYwOFx1YzJkY1x1YjI5NCBcdWIyZTRcdWM3NGNcdWFjZmMgXHVhYzE5XHViMmU0LjxcL3A+XHJcblxyXG48cD48c3Ryb25nPkthbmppIDB4MUFCQyAweDAzNDUgJnJhcnI7Jm5ic3A7MTAwMCAwMDAwMDAxMCAxMTAxMDEwMTExMTAwIDAwMDExMDEwMDAxMDE8XC9zdHJvbmc+PFwvcD5cclxuXHJcbjxwPlx1Y2QxZCBcdWJlNDRcdWQyYjggXHVjMjE4XHViMjk0IDQgKyA4ICsgMTMgKyAxM1x1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+MTlcdWFjMWNcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YmUxNFx1YjdlZFx1YzVkNCBcdWFjMDFcdWFjMDFcdWM3NTggXHViZTE0XHViN2VkXHViMmY5IFx1YzcwNFx1Yzc1OCBcdWFkZGNcdWNlNTlcdWM1ZDAgXHViNTMwXHViNzdjIFx1YmNjMFx1ZDY1OFx1ZDU1YyBcdWNmNTRcdWI0ZGNcdWI5N2MmbmJzcDs4XHViZTQ0XHVkMmI4IFx1YjJlOFx1YzcwNFx1Yjg1YyBcdWIwNGFcdWM1YjRcdWMxMWMgXHVkNDVjXHVkNjA0XHVkNTVjIFx1Yzc3NFx1YzljNFx1YzIxOCBcdWJiMzZcdWM3NGNcdWM3NzQgXHVjNzg1XHViODI1XHViNDFjXHViMmU0LiBcdWJhYThcdWI0ZTAgXHVjODE1XHViY2Y0XHViOTdjIFx1YzgwMFx1YzdhNVx1ZDU1YyBcdWI0YTRcdWM1ZDQgXHVkMTMwXHViYmY4XHViMTI0XHVjNzc0XHVkMmI4IFx1Y2Y1NFx1YjRkY1x1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIFx1ZDEzMFx1YmJmOFx1YjEyNFx1Yzc3NFx1ZDJiOCBcdWNmNTRcdWI0ZGNcdWM3NTggbW9kZSBiaXRcdWFlNGNcdWM5YzAgXHVkNDVjXHVkNjA0XHVkNTVjIFx1ZDZjNCBcdWJkODhcdWM2NDRcdWM4MDRcdWQ1NWMgXHViMzcwXHVjNzc0XHVkMTMwIFx1YmUxNFx1YjdlZFx1Yzc3NCBcdWMwZGRcdWFjYmNcdWIyZTRcdWJhNzQgXHViMGE4XHVjNzQwIFx1YmQ4MFx1YmQ4NFx1Yzc0NCZuYnNwOzBcdWM3M2NcdWI4NWMgXHVjYzQ0XHVjNmI0XHViMmU0LiBcdWM3NzQgXHViNTRjIFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWJlMTRcdWI3ZWRcdWM3NzQgMTlcdWFjMWMgXHViYmY4XHViOWNjXHVjNzc0XHViNzdjXHViYTc0Jm5ic3A7MTExMDExMDBcdWFjZmMgMDAwMTAwMDFcdWM3NDQgXHVhZDUwXHViMzAwXHViODVjIFx1YzBiZFx1Yzc4NVx1ZDU1OFx1YzVlYyAxOVx1YWMxY1x1Yzc1OCBcdWIzNzBcdWM3NzRcdWQxMzAgXHViZTE0XHViN2VkXHVjNzQ0IFx1YjljY1x1YjRlMFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjMmRjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+MDAwMSAwMDAwMDAxMDAwIDAwMDExMTEwMTEgMDExMTAwMTAwMCAxMDAxMTEwPFwvc3Ryb25nPjxcL3A+XHJcblxyXG48cD48c3Ryb25nPjAwMTAgMDAwMDAwMTAxIDAwMTExMDAxMTEwIDExMTAwMTExMDAxIDAwMDAxMDxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+PHN0cm9uZz4wMTAwIDAwMDAwMDExIDAxMDAwMTAxIDEwMDEwMDEwIDEwMTAwMDExPFwvc3Ryb25nPjxcL3A+XHJcblxyXG48cD48c3Ryb25nPjAwMDAgMDAwMDAwIDExMTAxMTAwIDAwMDEwMDAxIDExMTAxMTAwPFwvc3Ryb25nPjxcL3A+XHJcblxyXG48cD5cdWM3MDRcdWM3NTggXHVjZjU0XHViNGRjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NzQgMTlcdWFjMWNcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YmUxNFx1YjdlZFx1YzVkMCBcdWM3NzhcdWNmNTRcdWI1MjlcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+MDAwMTAwMDAgMDAxMDAwMDAgMDExMTEwMTEgMDExMTAwMTAgMDAxMDAxMTEgMDAwMTAwMDAgMDAwMTAxMDAgMTExMDAxMTEgMDExMTAwMTEgMTAwMTAwMDAgMTAwMTAwMDAgMDAwMDExMDEgMDAwMTAxMTAgMDEwMDEwMTAgMTAwMDExMDAgMDAwMDAwMDAgMTExMDExMDAgMDAwMTAwMDEgMTExMDExMDA8XC9zdHJvbmc+PFwvcD5cclxuXHJcbjxwPjxzdHJvbmc+JnJhcnI7IEhFWCAxMDIwN0I3MjI3MTAxNEU3NzM5MDkwMEQxNjRBOEMwMEVDMTFFQzxcL3N0cm9uZz48XC9wPlxyXG5cclxuPHA+XHVjNzA0XHVjNzU4IFx1YjljOFx1YzljMFx1YjljOSBcdWFjYjBcdWFjZmNcdWNjOThcdWI3ZmMgMTZcdWM5YzRcdWMyMThcdWI4NWMgXHVjNzc4XHVjZjU0XHViNTI5XHViNDFjIDE5XHVhYzFjXHVjNzU4IFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWJlMTRcdWI3ZWRcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWMwXHViYTc0IFx1YWRmOFx1YzVkMCBcdWI1MzBcdWI3N2MgXHVjNmQwXHViNzk4IFx1YzgxNVx1YmNmNFx1Yjk3YyBcdWJjZjVcdWM2ZDBcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1Yjc3Yy48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWM5MDRcdWM1ZDAgXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1Yzc1OCBcdWMyMTggUFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQgKDEgJmxlOyBQICZsZTsgMTAwMCk8XC9wPlxyXG5cclxuPHA+XHVhYzAxXHVhYzAxXHVjNzU4IFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWIyOTQgXHVkNTVjIFx1YzkwNFx1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWI0MWMgMTlcdWFjMWNcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YmUxNFx1YjdlZFx1Yzc3NFx1YmE3MCwgMzhcdWFjMWNcdWM3NTggMTZcdWM5YzRcdWMyMTggXHViYjM4XHVjNzkwXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gMH45LCBBfkYgXHVjNjc4XHVjNzU4Jm5ic3A7XHVjNzk4XHViYWJiXHViNDFjIFx1YmIzOFx1Yzc5MFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWIyOTQgXHVhY2JkXHVjNmIwXHViMjk0IFx1YzVjNlx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDFcdWFjMDFcdWM3NTggXHVkMTRjXHVjMmE0XHVkMmI4IFx1Y2YwMFx1Yzc3NFx1YzJhNFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1Yzc3NCBcdWQ1NWMgXHVjOTA0XHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWJiMzhcdWM3OTBcdWM3NTggXHVjMjE4XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWM4MTVcdWMyMTggXHVkNTU4XHViMDk4PFwvbGk+XHJcblx0PGxpPlx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWQ1NThcdWM1ZWMsIFx1YjUxNFx1Y2Y1NFx1YjUyOVx1YjQxYyBcdWJiMzhcdWM3OTBcdWM1ZjQ8XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWI5Y2NcdWM3N2MgXHVjZDljXHViODI1IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yzc3NCBcdWNkOWNcdWI4MjUgXHVhYzAwXHViMmE1XHVkNTVjIFx1YzU0NFx1YzJhNFx1ZDBhNCBcdWJiMzhcdWM3OTBcdWI3N2NcdWJhNzQoMHgyMH4weDdlKSBcdWFkZjhcdWIzMDBcdWI4NWMgXHVjZDljXHViODI1XHVkNTU4XHViYTc0IFx1YjQxOFx1YmE3MCwgXHViMmU0XHViOWNjIFx1YzYwOFx1YzY3OFx1Yjg1YyBcdWJjMzFcdWMyYWNcdWI3OThcdWMyZGMoIFxcIClcdWIyOTQgXFxcXCBcdWI4NWMsICNcdWM3NDAgXFwjIFx1YzczY1x1Yjg1YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWNkOWNcdWI4MjUgXHViZDg4XHVhYzAwXHViMmE1XHVkNTVjIFx1YmIzOFx1Yzc5MFx1Yzc3YyBcdWFjYmRcdWM2YjBcdWM1ZDQ8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT44Yml0IFx1YmIzOFx1Yzc5MFx1Yzc3YyBcdWFjYmRcdWM2YjAgOiBcXHh4LCB4XHViMjk0IDE2XHVjOWM0XHVjMjE4XHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU4OFx1Yzc0NCBcdWFjYmRcdWM2YjBcdWM3NTggXHVjNzkwXHViOWFjXHVjMjE4KFx1YzYwOFx1YzJkYyA6Jm5ic3A7XFxBRSk8XC9saT5cclxuXHQ8bGk+MTNiaXQgXHViYjM4XHVjNzkwXHVjNzdjIFx1YWNiZFx1YzZiMCA6ICNieHh4IDogYlx1YjI5NCAwIFx1YjYxMFx1YjI5NCAxLCB4XHViMjk0IDE2XHVjOWM0XHVjMjE4XHViODVjIFx1ZDQ1Y1x1ZDYwNFx1ZDU4OFx1Yzc0NCBcdWFjYmRcdWM2YjBcdWM3NTggXHVjNzkwXHViOWFjXHVjMjE4KFx1YzYwOFx1YzJkYyA6ICMxM0FDKTxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWJhNzQgXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cD4weDIwKFx1YzJhNFx1ZDM5OFx1Yzc3NFx1YzJhNFx1YmMxNClcdWJjZjRcdWIyZTQgXHVjNzkxXHVhYzcwXHViMDk4IDB4N2UofilcdWJjZjRcdWIyZTQgXHVkMDcwIFx1YmFhOFx1YjRlMCA4Yml0Jm5ic3A7XHVjNTQ0XHVjMmE0XHVkMGE0IFx1YmIzOFx1Yzc5MCBcdWQ2MzlcdWM3NDAgXHViYWE4XHViNGUwIDEzYml0IFx1YmIzOFx1Yzc5MFx1YjI5NCBcdWNkOWNcdWI4MjUgXHViZDg4XHVhYzAwXHViMmE1XHVkNTVjIFx1YmIzOFx1Yzc5MFx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIyNjgwIiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiUVIiLCJkZXNjcmlwdGlvbiI6IjxwPlFSIENvZGVzICh0aGUgc21hbGxlc3QsIHdoaWNoIGlzIDIxIHBpeGVscyBieSAyMSBwaXhlbHMsIGlzIHNob3duIGJlbG93KSBhcmUgc3F1YXJlIGFycmF5cyBvZiBibGFja29yIHdoaXRlIHBpeGVscyAobW9kdWxlcykgd2hpY2ggaW5jbHVkZSBQb3NpdGlvbiBEZXRlY3Rpb24gUGF0dGVybnMgKHRoZSBzcXVhcmUgYnVsbCZsc3F1bztzLWV5ZSBwYXR0ZXJucyksVGltaW5nIFBhdHRlcm5zICh0aGUgYWx0ZXJuYXRpbmcgYmxhY2sgYW5kIHdoaXRlIGxpbmVzKSwgQWxpZ25tZW50IFBhdHRlcm5zIGluIGxhcmdlciBRUiBDb2RlcyxGb3JtYXQgSW5mb3JtYXRpb24gKHRoZSBzdGlwcGxlZCBwaXhlbHMpLCBWZXJzaW9uIGluZm9ybWF0aW9uIGluIGxhcmdlciBRUiBDb2RlcyBhbmQgRGF0YSBhbmQgRXJyb3JDb3JyZWN0aW9uIENvZGV3b3JkcyAoZ3JheSA4IHBpeGVsIGJsb2NrcykuPFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvcXIucG5nXCIgc3R5bGU9XCJoZWlnaHQ6MzIzcHg7IHdpZHRoOjMyOXB4XCIgXC8+PFwvcD5cclxuXHJcbjxwPlRoZSAyMS1ieS0yMSBRUiBDb2RlIGhhcyAyNiBkYXRhIGFuZCBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3Jkcy4gQXQgdGhlIGxvd2VzdCBlcnJvciBjb3JyZWN0aW9ubGV2ZWwgZm9yIHRoaXMgY29kZSwgMTkgYXJlIGRhdGEgY29kZXdvcmRzIGFuZCA3IGFyZSBlcnJvciBjb3JyZWN0aW9uIGNvZGV3b3Jkcy4gRGF0YSBtYXkgYmVlbmNvZGVkIGFzIG51bWVyaWMgYXQgMyBudW1iZXJzIHBlciAxMCBiaXRzLCBhcyBhbHBoYW51bWVyaWMgYXQgMiBjaGFyYWN0ZXJzIHBlciAxMSBiaXRzLCBhcyA4IGJpdGJ5dGVzIG9yIGFzIEthbmppIGF0IDEzIGJpdHMgcGVyIGNoYXJhY3Rlci4gRGF0YSBpcyBlbmNvZGVkIGluIGdyb3VwcyBvZiAobW9kZSwgY2hhcmFjdGVyIGNvdW50LGNoYXJhY3RlciBkYXRhIGJpdHMpLiBUaGUgbW9kZSBjYW4gY2hhbmdlIHdpdGhpbiB0aGUgZGF0YSBzdHJlYW0uIFRoZSBtb2RlIGlzIHNwZWNpZmllZCBieSBhIDQgYml0Y29kZSBhbmQgdGhlIGNoYXJhY3RlciBjb3VudCBieSBhIHZhcnlpbmcgbnVtYmVyIG9mIGJpdHMgZGVwZW5kaW5nIG9uIHRoZSBtb2RlIGFuZCBRUiBDb2RlIHNpemUuRm9yIHRoZSAyMS1ieS0yMSBjb2RlLCB0aGUgY2hhcmFjdGVyIGNvdW50IGJpdHMgYXJlOjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NTAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+TW9kZSBOYW1lPFwvdGg+XHJcblx0XHRcdDx0aD5Nb2RlIEJpdHM8XC90aD5cclxuXHRcdFx0PHRoPkNvdW50IEJpdHM8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPk51bWVyaWM8XC90ZD5cclxuXHRcdFx0PHRkPjAwMDE8XC90ZD5cclxuXHRcdFx0PHRkPjEwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPkFscGhhbnVtZXJpYzxcL3RkPlxyXG5cdFx0XHQ8dGQ+MDAxMDxcL3RkPlxyXG5cdFx0XHQ8dGQ+OTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD44IGJpdCBieXRlPFwvdGQ+XHJcblx0XHRcdDx0ZD4wMTAwPFwvdGQ+XHJcblx0XHRcdDx0ZD44PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPkthbmppPFwvdGQ+XHJcblx0XHRcdDx0ZD4xMDAwPFwvdGQ+XHJcblx0XHRcdDx0ZD44PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlRlcm1pbmF0aW9uPFwvdGQ+XHJcblx0XHRcdDx0ZD4wMDAwPFwvdGQ+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5UaGUgZW50aXJlIGRhdGEgc3RyZWFtIGVuZHMgaW4gdGhlIHRlcm1pbmF0aW9uIGNvZGUgd2hpY2ggbWF5IGJlIHRydW5jYXRlZCBpZiB0aGVyZSBpcyBub3QgZW5vdWdocm9vbS4gQW55IHBhcnRpYWxseSBmaWxsZWQgY29kZXdvcmQgYWZ0ZXIgdGhlIHRlcm1pbmF0aW9uIGNvZGUgaXMgZmlsbGVkIHdpdGggMCBiaXRzLiBBbnkgcmVtYWluaW5nY29kZXdvcmRzIGFyZSBzZXQgdG8gMTExMDExMDAgZm9sbG93ZWQgYnkgMDAwMTAwMDEgYWx0ZXJuYXRpbmcuPFwvcD5cclxuXHJcbjxwPk51bWVyaWMgc3RyaW5ncyBhcmUgZW5jb2RlZCAzIGRpZ2l0cyBhdCBhIHRpbWUuIElmIHRoZXJlIGFyZSByZW1haW5pbmcgZGlnaXRzLCAyIGRpZ2l0cyBhcmUgZW5jb2RlZCBpbiA3Yml0cyBvciAxIGRpZ2l0IGluIDQgYml0cy4gRm9yIGV4YW1wbGU6PFwvcD5cclxuXHJcbjxwcmU+XHJcbjEyMzQ1Njc4ICZyYXJyOyAxMjMgNDU2IDc4ICZyYXJyOyAwMDAxMTExMDExIDAxMTEwMDEwMDAgMTAwMTExMDxcL3ByZT5cclxuXHJcbjxwPlByZWZpeCB3aXRoIG1vZGUgKDAwMDEpIGFuZCBjb3VudCAoOCBcdTA2ODAgMDAwMDAwMTAwMCkgaXMgKDQgKyAxMCArIDEwICsgMTAgKyA3KSBiaXRzOjxcL3A+XHJcblxyXG48cHJlPlxyXG4wMDAxIDAwMDAwMDEwMDAgMDAwMTExMTAxMSAwMTExMDAxMDAwIDEwMDExMTA8XC9wcmU+XHJcblxyXG48cD5BbHBoYW51bWVyaWMgc3RyaW5ncyBlbmNvZGUgdGhlIGNoYXJhY3RlcnMgKCZsdDtTUCZndDsgcmVwcmVzZW50cyB0aGUgc3BhY2UgY2hhcmFjdGVyKTo8XC9wPlxyXG5cclxuPHByZT5cclxuMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJmx0O1NQJmd0OyQlKistLlwvOjxcL3ByZT5cclxuXHJcbjxwPmFzIG51bWJlcnMgZnJvbSAwIHRvIDQ0LCB0aGVuIHR3byBjaGFyYWN0ZXJzIGFyZSBlbmNvZGVkIGluIDExIGJpdHM6PFwvcD5cclxuXHJcbjxwcmU+XHJcbiZsdDtmaXJzdCBjaGFyIGNvZGUmZ3Q7ICogNDUgKyAmbHQ7c2Vjb25kIGNoYXIgY29kZSZndDs8XC9wcmU+XHJcblxyXG48cD5pZiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaXMgb2RkLCB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgZW5jb2RlZCBpbiA2IGJpdHMuIEZvciBleGFtcGxlOjxcL3A+XHJcblxyXG48cHJlPlxyXG5BQy00MiAmcmFycjsgKDEwLCAxMiwgNDEsIDQsIDIpICZyYXJyOyAxMCo0NSArIDEyID0gNDYyLCA0MSo0NSArIDQgPSAxODQ5LCAyICZyYXJyOyAwMDExMTAwMTExMCAxMTEwMDExMTAwMSAwMDAwMTA8XC9wcmU+XHJcblxyXG48cD5QcmVmaXggd2l0aCBtb2RlIGFuZCBjb3VudCBpcyAoNCArIDkgKyAxMSArIDExKyA2KSBiaXRzOjxcL3A+XHJcblxyXG48cHJlPlxyXG4wMDEwIDAwMDAwMDEwMSAwMDExMTAwMTExMCAxMTEwMDExMTAwMSAwMDAwMTA8XC9wcmU+XHJcblxyXG48cD5UaGUgOCBiaXQgYmluYXJ5IGFuZCBLYW5qaSBtb2RlcyB3aWxsIGJlIHN0cmFpZ2h0Zm9yd2FyZCBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgcHJvYmxlbS4gS2FuamkgY29kZXN3aWxsIGp1c3QgYmUgb3BhcXVlIDEzIGJpdCBjb2RlczsgeW91IG5lZWQgbm90IGRlY29kZSB0aGUgY2hhcmFjdGVycyB0aGV5IHJlcHJlc2VudCwganVzdCB0aGVoZXhhZGVjaW1hbCB2YWx1ZXMuIEZvciBleGFtcGxlOjxcL3A+XHJcblxyXG48cHJlPlxyXG44IGJpdCAweDQ1IDB4OTIgMHhhMyAmcmFycjsgMDEwMDAxMDEgMTAwMTAwMTAgMTAxMDAwMTE8XC9wcmU+XHJcblxyXG48cD5QcmVmaXggd2l0aCBtb2RlIGFuZCBjb3VudCBpcyAoNCArIDggKyA4ICsgOCArIDgpIGJpdHM6PFwvcD5cclxuXHJcbjxwcmU+XHJcbjAxMDAgMDAwMDAwMTEgMDEwMDAxMDEgMTAwMTAwMTAgMTAxMDAwMTE8XC9wcmU+XHJcblxyXG48cHJlPlxyXG5LYW5qaSAweDFBQkMgMHgwMzQ1ICZyYXJyOyAxMTAxMDEwMTExMTAwIDAwMDExMDEwMDAxMDE8XC9wcmU+XHJcblxyXG48cD5QcmVmaXggd2l0aCBtb2RlIGFuZCBjb3VudCBpcyAoNCArIDggKyAxMyArIDEzKSBiaXRzOjxcL3A+XHJcblxyXG48cHJlPlxyXG4xMDAwIDAwMDAwMDEwIDExMDEwMTAxMTExMDAgMDAwMTEwMTAwMDEwMTxcL3ByZT5cclxuXHJcbjxwPlRvIGlsbHVzdHJhdGUgZm9ybWluZyB0aGUgMTkgY29kZXdvcmQgY29udGVudCBvZiBhIFFSIENvZGUsIGNvbWJpbmUgdGhlIGZpcnN0IDMgc2VxdWVuY2VzIGFib3ZlIChmb3IgbnVtZXJpYywgYWxwaGFudW1lcmljIGFuZCBieXRlcykuIENvbmNhdGVuYXRlIHRoZSBiaXRzLCBzcGxpdCBpbnRvIDggYml0IGNvZGUgd29yZHMgYWRkIHRoZSB0ZXJtaW5hdGlvbiBjb2Rld29yZCwgYW55IGZpbGwgYml0cyBhbmQgZmlsbCBieXRlcyg0MSArIDQxICsgMzYgZGF0YSBiaXRzICsgNCBiaXQgdGVybWluYXRpb24gY29kZSA9IDEyMiAmcmFycjsgNiBmaWxsIGJpdHMgYXJlIG5lZWRlZCB0byBnZXQgMTYgYnl0ZXMsIGFuZCB0byBmaWxsIG91dCB0aGUgMTkgYnl0ZXMsIDMgZmlsbCBieXRlcyBhcmUgbmVlZGVkKTo8XC9wPlxyXG5cclxuPHByZT5cclxuMDAwMSAwMDAwMDAxMDAwIDAwMDExMTEwMTEgMDExMTAwMTAwMCAxMDAxMTEwXHJcbjAwMTAgMDAwMDAwMTAxIDAwMTExMDAxMTEwIDExMTAwMTExMDAxIDAwMDAxMFxyXG4wMTAwIDAwMDAwMDExIDAxMDAwMTAxIDEwMDEwMDEwIDEwMTAwMDExXHJcbjAwMDAgMDAwMDAwIDExMTAxMTAwIDAwMDEwMDAxIDExMTAxMTAwPFwvcHJlPlxyXG5cclxuPHA+c3BsaXQgaW50byA4IGJpdCBjb2Rld29yZHM6PFwvcD5cclxuXHJcbjxwcmU+XHJcbjAwMDEwMDAwIDAwMTAwMDAwIDAxMTExMDExIDAxMTEwMDEwIDAwMTAwMTExIDAwMDEwMDAwIDAwMDEwMTAwIDExMTAwMTExXHJcbjAxMTEwMDExIDEwMDEwMDAwIDEwMDEwMDAwIDAwMDAxMTAxIDAwMDEwMTEwIDAxMDAxMDEwIDEwMDAxMTAwIDAwMDAwMDAwXHJcbjExMTAxMTAwIDAwMDEwMDAxIDExMTAxMTAwICZyYXJyOyBIRVggMTAyMDdCNzIyNzEwMTRFNzczOTA5MDBEMTY0QThDMDBFQzExRUM8XC9wcmU+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gdG8gcmVhZCAxOSBjb2Rld29yZHMgYW5kIHByaW50IHRoZSBjb3JyZXNwb25kaW5nIGRhdGEuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBhIHNpbmdsZSBpbnRlZ2VyIFAsICgxICZsZTsgUCAmbGU7IDEwMDApLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGRhdGEgc2V0c3RoYXQgZm9sbG93LiBFYWNoIGRhdGEgc2V0IGlzIGEgc2luZ2xlIGxpbmUgb2YgaW5wdXQgY29uc2lzdGluZyBvZiB0aGUgZGF0YSBzZXQgbnVtYmVyLCBOLCBmb2xsb3dlZCBieSBhc2luZ2xlIHNwYWNlIGFuZCAzOCBoZXhhZGVjaW1hbCBkaWdpdHMgZ2l2aW5nIHRoZSAxOSBieXRlcyBvZiBRUiBDb2RlIGRhdGEuIFRoZSB2YWxpZCBoZXhhZGVjaW1hbCBkaWdpdHMgYXJlIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIEEsIEIsIEMsIEQsIEUgYW5kIEYuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggZGF0YSBzZXQgdGhlcmUgaXMgb25lIGxpbmUgb2Ygb3V0cHV0LiBJdCBjb250YWlucyB0aGUgZGF0YSBzZXQgbnVtYmVyIChOKSBmb2xsb3dlZCBieSBhIHNpbmdsZXNwYWNlLCB0aGUgbnVtYmVyIG9mIFFSIGRlY29kZWQgY2hhcmFjdGVycyBpbiB0aGUgcmVzdWx0LCBhIHNpbmdsZSBzcGFjZSBhbmQgdGhlIGNoYXJhY3RlciBzdHJpbmdjb3JyZXNwb25kaW5nIHRvIHRoZSBRUiBDb2RlIGRhdGEuIEluIHRoZSBvdXRwdXQgc3RyaW5nLCBwcmludGFibGUgQVNDSUkgY2hhcmFjdGVycyAoaW4gdGhlIHJhbmdlMHgyMCB0byAweDdlKSBhcmUgcHJpbnRlZCBhcyB0aGUgQVNDSUkgY2hhcmFjdGVyIEVYQ0VQVCB0aGF0IGJhY2tzbGFzaCAoXFwpIGlzIHByaW50ZWQgYXMgXFxcXCBhbmRwb3VuZCBzaWduICgjKSBpcyBwcmludGVkIGFzIFxcIy4gTm9uLXByaW50YWJsZSA4IGJpdCBkYXRhIGlzIG91dHB1dCBhcyBcXHh4LCB3aGVyZSB4IGlzIGEgaGV4YWRlY2ltYWxkaWdpdCAoZS5nLiBcXEFFKS4gTm9uLXByaW50YWJsZSA4IGJpdCBkYXRhIGlzIGFueSB2YWx1ZSB0aGF0IGlzIGxlc3MgdGhhbiB0aGUgQVNDSUkgdmFsdWUgb2YgYSBzcGFjZSgweDIwKSBvciBncmVhdGVyIHRoYW4gMHg3Ni4gMTMgYml0IEthbmppIHZhbHVlcyBhcmUgcHJpbnRlZCBhcyAjYnh4eCwgd2hlcmUgYiBpcyAwIG9yIDEgYW5kIHggaXMgYWhleGFkZWNpbWFsIGRpZ2l0IChlLmcuICMxM0FDKS48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=