시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 9 5 5 62.500%

문제

팩스 머신은 run-length encoding(RLE)을 이용해 데이터를 압축한다. 데이터는 같은 값이 연속적으로 많이 나타나는 수열이라 할 수 있다. 이러한 연속적인 같은 값을 run이라 한다. 그래서 RLE는 그 수열을 그대로 저장하는 대신 하나의 데이터 값과 그 값의 개수로 데이터를 표현한다. 이 인코딩 방식은 아이콘이나 텍스트, 선 등의 비교적 간단한 그래픽 이미지 같은 런이 많은 데이터에서 유용하다. 만약 사진과 같이 런이 적은 파일에 적용한다면 오히려 원래 파일 사이즈보다 커질 가능성도 있다. 

한 블록의 데이터를 RLE 알고리즘을 사용해 인코딩하려고 한다. 하나의 런은 2바이트 수열을 사용해 표현한다. 첫 번째 바이트는 하나의 값이 반복된 횟수이고, 두 번째 바이트는 그 값을 나타낸다. 반복 횟수는 최상위 비트가 1이고 나머지 7비트는 반복 횟수 - 3인 8비트 수로 표현된다. 따라서 데이터에서 같은 값은 수열의 2바이트 당 최대130번 나타날 수 있다. 또한 런의 최소 수는 3이다. 런이 아닌 바이트들은 prefix 바이트로 인코딩되는데, 이 바이트는 런이 아닌 바이트의 개수 - 1을 나타내며, 최상위 비트는 항상 0이다. 따라서 prefix 바이트의 범위는 0 ~ 127로, 1부터 128까지의 수를 표현한다.

만약 런이 130바이트보다 크다면 여러 개의 2바이트 수열로 표현한다. 이 경우 수열의 첫 번째는 항상 크기가 130인 런이다. 3회 이상 반복된 값은 반드시 런으로 인코딩되어야 한다. 만약 런이 아닌 값이 128바이트보다 길다면 prefix 바이트를 여러 개 사용해 표현한다. 예를 들어, 길이가 262인 런은 크기가 130인 런 두 개와 크기가 2인 prefix 바이트로 인코딩한다.

입력

입력의 첫 줄에 데이터 셋의 수인 정수 P(1 ≤ P ≤ 1000)가 주어진다.

각 데이터 셋의 첫 줄에는 바이트의 수 B(1 ≤ B ≤ 5000)가 십진수 정수로 주어진다.

다음 줄 부터 인코딩 할 데이터가 주어진다. 데이터의 마지막 줄을 제외한 나머지 줄에는 16진수가 80자리 주어지며, 마지막 줄은 80자리보다 적을 수 있다. 두 16진수 자리가 한 바이트를 표현한다. 16진수 자리는 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F로 이뤄져 있다.

출력

각각의 데이터 셋에 대해 첫 줄에는 인코딩 된 바이트의 수를 출력한다. 나머지 줄에는 인코딩 된 데이터를 16진수로 출력한다. 각 줄은 마지막 줄을 제외하고 16진수 80자리를 출력한다. 마지막 줄은 80자리 이하이다.

예제 입력 1

4
1
07
5
F4A5A5A5A5
44
0000000000000000FFFFFF66665A5A5A5A5A71727374758008011011135555555555555501020399
777777CC
40
68686868686868686868686868686868686868686868686868686868686868686868686868686868

예제 출력 1

2
0007
4
00F481A5
32
850080FF016666825A0A717273747580080110111384550301020399807700CC
2
A568
W3sicHJvYmxlbV9pZCI6IjI2ODYiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQzMjlcdWMyYTQiLCJkZXNjcmlwdGlvbiI6IjxwPlx1ZDMyOVx1YzJhNCBcdWJhMzhcdWMyZTBcdWM3NDAgcnVuLWxlbmd0aCBlbmNvZGluZyhSTEUpXHVjNzQ0IFx1Yzc3NFx1YzZhOVx1ZDU3NCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MmbmJzcDtcdWM1NTVcdWNkOTVcdWQ1NWNcdWIyZTQuIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YjI5NCBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzc0IFx1YzVmMFx1YzE4ZFx1YzgwMVx1YzczY1x1Yjg1YyBcdWI5Y2VcdWM3NzQgXHViMDk4XHVkMGMwXHViMDk4XHViMjk0IFx1YzIxOFx1YzVmNFx1Yzc3NFx1Yjc3YyBcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNzc0XHViN2VjXHVkNTVjIFx1YzVmMFx1YzE4ZFx1YzgwMVx1Yzc3OCBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzQ0IHJ1blx1Yzc3NFx1Yjc3YyBcdWQ1NWNcdWIyZTQuJm5ic3A7XHVhZGY4XHViNzk4XHVjMTFjJm5ic3A7UkxFXHViMjk0IFx1YWRmOCBcdWMyMThcdWM1ZjRcdWM3NDQgXHVhZGY4XHViMzAwXHViODVjIFx1YzgwMFx1YzdhNVx1ZDU1OFx1YjI5NCBcdWIzMDBcdWMyZTAmbmJzcDtcdWQ1NThcdWIwOThcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YWMxMlx1YWNmYyBcdWFkZjggXHVhYzEyXHVjNzU4IFx1YWMxY1x1YzIxOFx1Yjg1YyBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LiBcdWM3NzQgXHVjNzc4XHVjZjU0XHViNTI5IFx1YmMyOVx1YzJkZFx1Yzc0MCBcdWM1NDRcdWM3NzRcdWNmNThcdWM3NzRcdWIwOTggXHVkMTRkXHVjMmE0XHVkMmI4LCBcdWMxMjAgXHViNGYxXHVjNzU4IFx1YmU0NFx1YWQ1MFx1YzgwMSBcdWFjMDRcdWIyZThcdWQ1NWMgXHVhZGY4XHViNzk4XHVkNTNkIFx1Yzc3NFx1YmJmOFx1YzljMCBcdWFjMTlcdWM3NDAmbmJzcDtcdWI3ZjBcdWM3NzQgXHViOWNlXHVjNzQwIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YzVkMFx1YzExYyBcdWM3MjBcdWM2YTlcdWQ1NThcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWMwYWNcdWM5YzRcdWFjZmMgXHVhYzE5XHVjNzc0Jm5ic3A7XHViN2YwXHVjNzc0IFx1YzgwMVx1Yzc0MCBcdWQzMGNcdWM3N2NcdWM1ZDAgXHVjODAxXHVjNmE5XHVkNTVjXHViMmU0XHViYTc0IFx1YzYyNFx1ZDc4OFx1YjgyNCBcdWM2ZDBcdWI3OTggXHVkMzBjXHVjNzdjIFx1YzBhY1x1Yzc3NFx1Yzk4OFx1YmNmNFx1YjJlNCBcdWNlZTRcdWM5YzggXHVhYzAwXHViMmE1XHVjMTMxXHViM2M0IFx1Yzc4OFx1YjJlNC4mbmJzcDs8XC9wPlxyXG5cclxuPHA+XHVkNTVjIFx1YmUxNFx1Yjg1ZFx1Yzc1OCBcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgUkxFIFx1YzU0Y1x1YWNlMFx1YjlhY1x1Yzk5OFx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NzQgXHVjNzc4XHVjZjU0XHViNTI5XHVkNTU4XHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVkNTU4XHViMDk4XHVjNzU4IFx1YjdmMFx1Yzc0MCAyXHViYzE0XHVjNzc0XHVkMmI4IFx1YzIxOFx1YzVmNFx1Yzc0NCBcdWMwYWNcdWM2YTlcdWQ1NzQgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LiBcdWNjYWIgXHViYzg4XHVjOWY4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YjI5NCBcdWQ1NThcdWIwOThcdWM3NTggXHVhYzEyXHVjNzc0IFx1YmMxOFx1YmNmNVx1YjQxYyBcdWQ2OWZcdWMyMThcdWM3NzRcdWFjZTAsIFx1YjQ1MCBcdWJjODhcdWM5ZjggXHViYzE0XHVjNzc0XHVkMmI4XHViMjk0IFx1YWRmOCBcdWFjMTJcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWJjMThcdWJjZjUgXHVkNjlmXHVjMjE4XHViMjk0IFx1Y2Q1Y1x1YzBjMVx1YzcwNCBcdWJlNDRcdWQyYjhcdWFjMDAgMVx1Yzc3NFx1YWNlMCBcdWIwOThcdWJhMzhcdWM5YzAgN1x1YmU0NFx1ZDJiOFx1YjI5NCBcdWJjMThcdWJjZjUgXHVkNjlmXHVjMjE4IC0gM1x1Yzc3OCZuYnNwOzhcdWJlNDRcdWQyYjggXHVjMjE4XHViODVjIFx1ZDQ1Y1x1ZDYwNFx1YjQxY1x1YjJlNC4gXHViNTMwXHViNzdjXHVjMTFjIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YzVkMFx1YzExYyBcdWFjMTlcdWM3NDAgXHVhYzEyXHVjNzQwJm5ic3A7XHVjMjE4XHVjNWY0XHVjNzU4IDJcdWJjMTRcdWM3NzRcdWQyYjggXHViMmY5IFx1Y2Q1Y1x1YjMwMDEzMFx1YmM4OCBcdWIwOThcdWQwYzBcdWIwYTAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHViNjEwXHVkNTVjIFx1YjdmMFx1Yzc1OCBcdWNkNWNcdWMxOGMgXHVjMjE4XHViMjk0IDNcdWM3NzRcdWIyZTQuIFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHViYzE0XHVjNzc0XHVkMmI4XHViNGU0XHVjNzQwIHByZWZpeCBcdWJjMTRcdWM3NzRcdWQyYjhcdWI4NWMgXHVjNzc4XHVjZjU0XHViNTI5XHViNDE4XHViMjk0XHViMzcwLCBcdWM3NzQgXHViYzE0XHVjNzc0XHVkMmI4XHViMjk0IFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHViYzE0XHVjNzc0XHVkMmI4XHVjNzU4IFx1YWMxY1x1YzIxOCAtIDFcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI0XHViYTcwLCBcdWNkNWNcdWMwYzFcdWM3MDQgXHViZTQ0XHVkMmI4XHViMjk0IFx1ZDU2ZFx1YzBjMSAwXHVjNzc0XHViMmU0LiBcdWI1MzBcdWI3N2NcdWMxMWMgcHJlZml4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWJjOTRcdWM3MDRcdWIyOTQgMCB+IDEyN1x1Yjg1YywmbmJzcDsxXHViZDgwXHVkMTMwIDEyOFx1YWU0Y1x1YzljMFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVkNDVjXHVkNjA0XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWI5Y2NcdWM1N2QgXHViN2YwXHVjNzc0IDEzMFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YmNmNFx1YjJlNCBcdWQwNmNcdWIyZTRcdWJhNzQgXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCAyXHViYzE0XHVjNzc0XHVkMmI4IFx1YzIxOFx1YzVmNFx1Yjg1YyBcdWQ0NWNcdWQ2MDRcdWQ1NWNcdWIyZTQuIFx1Yzc3NCBcdWFjYmRcdWM2YjAgXHVjMjE4XHVjNWY0XHVjNzU4IFx1Y2NhYiBcdWJjODhcdWM5ZjhcdWIyOTQgXHVkNTZkXHVjMGMxIFx1ZDA2Y1x1YWUzMFx1YWMwMCAxMzBcdWM3NzggXHViN2YwXHVjNzc0XHViMmU0LiAzXHVkNjhjIFx1Yzc3NFx1YzBjMSBcdWJjMThcdWJjZjVcdWI0MWMgXHVhYzEyXHVjNzQwIFx1YmMxOFx1YjRkY1x1YzJkYyBcdWI3ZjBcdWM3M2NcdWI4NWMgXHVjNzc4XHVjZjU0XHViNTI5XHViNDE4XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNTdkIFx1YjdmMFx1Yzc3NCBcdWM1NDRcdWIyY2MgXHVhYzEyXHVjNzc0IDEyOFx1YmMxNFx1Yzc3NFx1ZDJiOFx1YmNmNFx1YjJlNCBcdWFlMzhcdWIyZTRcdWJhNzQgcHJlZml4IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yjk3YyBcdWM1ZWNcdWI3ZWMgXHVhYzFjIFx1YzBhY1x1YzZhOVx1ZDU3NCBcdWQ0NWNcdWQ2MDRcdWQ1NWNcdWIyZTQuIFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQsIFx1YWUzOFx1Yzc3NFx1YWMwMCAyNjJcdWM3NzggXHViN2YwXHVjNzQwIFx1ZDA2Y1x1YWUzMFx1YWMwMCZuYnNwOzEzMFx1Yzc3OCBcdWI3ZjAgXHViNDUwIFx1YWMxY1x1YzY0MCBcdWQwNmNcdWFlMzBcdWFjMDAgMlx1Yzc3OCBwcmVmaXggXHViYzE0XHVjNzc0XHVkMmI4XHViODVjIFx1Yzc3OFx1Y2Y1NFx1YjUyOVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Yzc4NVx1YjgyNVx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwIFx1YjM3MFx1Yzc3NFx1ZDEzMCBcdWMxNGJcdWM3NTggXHVjMjE4XHVjNzc4IFx1YzgxNVx1YzIxOCBQKDEgJmxlOyBQICZsZTsgMTAwMClcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHViMzcwXHVjNzc0XHVkMTMwIFx1YzE0Ylx1Yzc1OCBcdWNjYWIgXHVjOTA0XHVjNWQwXHViMjk0IFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWMyMTgmbmJzcDtCKDEgJmxlOyBCICZsZTsgNTAwMClcdWFjMDAgXHVjMmVkXHVjOWM0XHVjMjE4IFx1YzgxNVx1YzIxOFx1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0YyBcdWM5MDQgXHViZDgwXHVkMTMwJm5ic3A7XHVjNzc4XHVjZjU0XHViNTI5IFx1ZDU2MCZuYnNwO1x1YjM3MFx1Yzc3NFx1ZDEzMFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuIFx1YjM3MFx1Yzc3NFx1ZDEzMFx1Yzc1OCBcdWI5YzhcdWM5YzBcdWI5YzkgXHVjOTA0XHVjNzQ0IFx1YzgxY1x1YzY3OFx1ZDU1YyBcdWIwOThcdWJhMzhcdWM5YzAgXHVjOTA0XHVjNWQwXHViMjk0IDE2XHVjOWM0XHVjMjE4XHVhYzAwIDgwXHVjNzkwXHViOWFjIFx1YzhmY1x1YzViNFx1YzljMFx1YmE3MCwgXHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1Yzc0MCA4MFx1Yzc5MFx1YjlhY1x1YmNmNFx1YjJlNCBcdWM4MDFcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHViNDUwIDE2XHVjOWM0XHVjMjE4IFx1Yzc5MFx1YjlhY1x1YWMwMCBcdWQ1NWMgXHViYzE0XHVjNzc0XHVkMmI4XHViOTdjIFx1ZDQ1Y1x1ZDYwNFx1ZDU1Y1x1YjJlNC4gMTZcdWM5YzRcdWMyMTggXHVjNzkwXHViOWFjXHViMjk0IDAsMSwyLDMsNCw1LDYsNyw4LDksQSxCLEMsRCxFLEZcdWI4NWMgXHVjNzc0XHViOTA0XHVjODM4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDFcdWFjMDFcdWM3NTggXHViMzcwXHVjNzc0XHVkMTMwIFx1YzE0Ylx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVjY2FiIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWM3NzhcdWNmNTRcdWI1MjkgXHViNDFjIFx1YmMxNFx1Yzc3NFx1ZDJiOFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LiBcdWIwOThcdWJhMzhcdWM5YzAgXHVjOTA0XHVjNWQwXHViMjk0IFx1Yzc3OFx1Y2Y1NFx1YjUyOSBcdWI0MWMgXHViMzcwXHVjNzc0XHVkMTMwXHViOTdjIDE2XHVjOWM0XHVjMjE4XHViODVjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVhYzAxIFx1YzkwNFx1Yzc0MCBcdWI5YzhcdWM5YzBcdWI5YzkgXHVjOTA0XHVjNzQ0IFx1YzgxY1x1YzY3OFx1ZDU1OFx1YWNlMCZuYnNwOzE2XHVjOWM0XHVjMjE4IDgwXHVjNzkwXHViOWFjXHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViOWM4XHVjOWMwXHViOWM5IFx1YzkwNFx1Yzc0MCA4MFx1Yzc5MFx1YjlhYyBcdWM3NzRcdWQ1NThcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIyNjg2IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiSnVzdCBUaGUgU2ltcGxlIEZheCIsImRlc2NyaXB0aW9uIjoiPHA+RmF4IG1hY2hpbmVzIHVzZSBhIGZvcm0gb2YgY29tcHJlc3Npb24gYmFzZWQgb24gcnVuLWxlbmd0aCBlbmNvZGluZy4gUnVuLWxlbmd0aCBlbmNvZGluZyAoUkxFKSBpcyBhIHZlcnkgc2ltcGxlIGZvcm0gb2YgZGF0YSBjb21wcmVzc2lvbiBpbiB3aGljaCBydW5zIG9mIGRhdGEgKHRoYXQgaXMsIHNlcXVlbmNlcyBpbiB3aGljaCB0aGUgc2FtZSBkYXRhIHZhbHVlIG9jY3VycyBpbiBtYW55IGNvbnNlY3V0aXZlIGRhdGEgZWxlbWVudHMpIGFyZSBzdG9yZWQgYXMgYSBzaW5nbGUgZGF0YSB2YWx1ZSBhbmQgY291bnQsIHJhdGhlciB0aGFuIGFzIHRoZSBvcmlnaW5hbCBydW4uIFRoaXMgaXMgbW9zdCB1c2VmdWwgb24gZGF0YSB0aGF0IGNvbnRhaW5zIG1hbnkgc3VjaCBydW5zOiBmb3IgZXhhbXBsZSwgcmVsYXRpdmVseSBzaW1wbGUgZ3JhcGhpYyBpbWFnZXMgc3VjaCBhcyBpY29ucywgdGV4dCwgYW5kIGxpbmUgZHJhd2luZ3MuIEl0IGlzIG5vdCB1c2VmdWwgd2l0aCBmaWxlcyB0aGF0IGRvbiYjMzk7dCBoYXZlIG1hbnkgcnVucyBhcyBpdCBjb3VsZCBwb3RlbnRpYWxseSBkb3VibGUgdGhlIGZpbGUgc2l6ZSAocGhvdG9ncmFwaCwgZm9yIGV4YW1wbGUpLjxcL3A+XHJcblxyXG48cD5Gb3IgdGhpcyBwcm9ibGVtLCB5b3Ugd2lsbCB3cml0ZSBhIHByb2dyYW0gdGhhdCBlbmNvZGVzIGEgYmxvY2sgb2YgZGF0YSB1c2luZyBhIHZlcnkgc2ltcGxlIFJMRSBhbGdvcml0aG0uIEEgcnVuIGlzIGVuY29kZWQgdXNpbmcgYSB0d28gYnl0ZSBzZXF1ZW5jZS4gVGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHNlcXVlbmNlIGNvbnRhaW5zIHRoZSBjb3VudCwgYW5kIHRoZSBzZWNvbmQgY29udGFpbnMgdGhlIHZhbHVlIHRvIHJlcGVhdC4gVGhlIGNvdW50IGlzIGVuY29kZWQgdXNpbmcgYW4gOCBiaXQgdmFsdWUgd2l0aCB0aGUgaGlnaCBvcmRlciBiaXQgc2V0IHRvIDEuIFRoZSByZW1haW5pbmcgNyBiaXRzIHJlcHJlc2VudCB0aGUgY291bnQtMy4gVGhpcyBnaXZlcyBhIG1heGltdW0gcnVuIGNvdW50IG9mIDEzMCBwZXIgMiBieXRlIHNlcXVlbmNlLiAoVGhpcyBpbXBsaWVzIHRoYXQgdGhlIG1pbmltdW0gcnVuIGNvdW50IGlzIDMpLiBCeXRlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBhIHJ1biBhcmUgZW5jb2RlZCBhcy1pcyB3aXRoIGEgcHJlZml4IGJ5dGUgaW5kaWNhdGluZyB0aGUgY291bnQgb2YgYnl0ZXMgaW4gdGhlIG5vbi1ydW4gbWludXMgMSwgMCB0aHJvdWdoIDEyNywgcmVwcmVzZW50aW5nIGEgcmFuZ2Ugb2YgMSAtIDEyOCAodGhlIGhpZ2ggb3JkZXIgYml0IHdpbGwgYWx3YXlzIGJlIDAgaW4gdGhlIGNhc2Ugb2Ygbm9uLXJ1biBkYXRhLjxcL3A+XHJcblxyXG48cD5JZiBhIHJ1biBjb250YWlucyBtb3JlIHRoYW4gMTMwIGJ5dGVzLCB0aGVuIGl0IG11c3QgYmUgZW5jb2RlZCB1c2luZyBtdWx0aXBsZSBzZXF1ZW5jZXMsIHRoZSBmaXJzdCBvZiB3aGljaCB3aWxsIGFsd2F5cyBiZSBhIHJ1biBvZiAxMzAuIEFsbCBydW5zIG9mIDMgb3IgbW9yZSBtdXN0IGJlIGVuY29kZWQgYXMgYSBydW4uIElmIGEgbm9uLXJ1biBjb250YWlucyBtb3JlIHRoYW4gMTI4IGJ5dGVzLCB0aGVuIG11bHRpcGxlIG5vbi1ydW4gc2VxdWVuY2VzIG11c3QgYmUgdXNlZC4gRm9yIGV4YW1wbGUsIGEgcnVuIG9mIDI2MiB3b3VsZCBiZSBlbmNvZGVkIGFzIHR3byBydW5zIG9mIDEzMCBmb2xsb3dlZCBieSBhIG5vbi1ydW4gb2YgMi48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIG9mIGlucHV0IGNvbnRhaW5zIGEgc2luZ2xlIGludGVnZXIgUCwgKDEgJmxlOyBQICZsZTsgMTAwMCksIHdoaWNoIGlzIHRoZSBudW1iZXIgb2YgZGF0YSBzZXRzIHRoYXQgZm9sbG93LiBFYWNoIGRhdGEgc2V0IGNvbnNpc3RzIG9mIG11bHRpcGxlIGxpbmVzLiBUaGUgZmlyc3QgbGluZSBjb250YWlucyB0d28gKDIpIGRlY2ltYWwgaW50ZWdlciB2YWx1ZXM6IHRoZSBwcm9ibGVtIG51bWJlciwgZm9sbG93ZWQgYnkgYSBzcGFjZSwgZm9sbG93ZWQgYnkgdGhlIG51bWJlciBvZiBieXRlcyBCLCAoMSAmbGU7IEIgJmxlOyA1MDAwKSwgdG8gZW5jb2RlLiBUaGUgcmVtYWluaW5nIGxpbmUocykgY29udGFpbihzKSB0aGUgZGF0YSB0byBiZSBlbmNvZGVkLiBFYWNoIGxpbmUgb2YgZGF0YSB0byBlbmNvZGUgd2lsbCBjb250YWluIDgwIGhleGFkZWNpbWFsIGRpZ2l0cyAoZXhjZXB0IHRoZSBsYXN0IGxpbmUsIHdoaWNoIG1heSBjb250YWluIGxlc3MpLiAyIGhleGFkZWNpbWFsIGRpZ2l0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgZWFjaCBieXRlLiBIZXhhZGVjaW1hbCBkaWdpdHMgYXJlOiAwLDEsMiwzLDQsNSw2LDcsOCw5LEEsQixDLEQsRSxGLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPkZvciBlYWNoIGRhdGEgc2V0LCB0aGVyZSBhcmUgbXVsdGlwbGUgbGluZXMgb2Ygb3V0cHV0LiBUaGUgZmlyc3QgbGluZSBjb250YWlucyBhIGRlY2ltYWwgaW50ZWdlciBnaXZpbmcgdGhlIGRhdGEgc2V0IG51bWJlciBmb2xsb3dlZCBieSBhIHNpbmdsZSBzcGFjZSwgZm9sbG93ZWQgYnkgYSBkZWNpbWFsIGludGVnZXIgZ2l2aW5nIHRoZSB0b3RhbCBudW1iZXIgb2YgZW5jb2RlZCBieXRlcy4gVGhlIHJlbWFpbmluZyBsaW5lcyBjb250YWluIHRoZSBlbmNvZGVkIGRhdGEgZWFjaCB3aXRoIDgwIGhleGFkZWNpbWFsIGRpZ2l0cywgZXhjZXB0IHRoZSBsYXN0LCB3aGljaCBtYXkgY29udGFpbiBsZXNzLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d