시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
5 초 128 MB 33 7 7 35.000%

문제

현종이는 공장 노동자이다. 부푼 꿈을 안고 입사해 20년간 일해왔으나, 만일 이번 달에 생산 효율이 증가하지 않는다면 다음 달에 해고될 것이라는 청천벽력같은 소식을 듣고 말았다. 현종이의 일은 간단하다. 주어진 순서대로 조각을 조립하여 제품을 제작하면 된다. 하지만 조각 a, b, c를 조립할 때, a-b 를 조립한 뒤 c를 이어붙이는 것과 b-c를 조립한 뒤 a를 이어붙이는 데에 걸리는 시간이 다르다. 현종이는 아마 이 공정을 효율적으로 개선하면 공장 일을 계속할 수 있을 것이라 판단했다.

현종이를 돕기 위해, 당신은 모든 조각을 조립하는 최적의 방법을 알려주는 프로그램을 작성하면 된다. 프로그램의 첫 줄에 조각의 목록이 주어진 뒤, 그 다음 줄부터 조각을 이어붙이는 데에 걸리는 시간과 그 결과물이 표 형태로 주어진다.

예제는 다음과 같다.

a와 a를 이어붙이는 데엔 3의 시간이 걸리고, 그 결과는 부품 b가 된다. 그리고 이것의 뒤에 다시 a를 이어붙이는 데엔 6의 시간이 걸릴 것이다. 표는 대칭이 아닐 수 있다. b-a를 조립하는 시간과 a-b를 조립하는 시간이 다를 수 있다는 의미이다.

만일 만들고자 하는 완성품이 aba라면, 두 가지 가능한 경우는 다음과 같다.

  • (ab)a = ba = a , 걸리는 시간 = time(ab) + time(ba) = 5 + 6 =11
  • a(ba) = aa = b , 걸리는 시간 = time(ba) + time(aa) = 6 + 3 = 9

따라서 출력은 9-b가 될 것이다.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다.

각 테스트 케이스의 첫 줄엔 자연수 k ( 1 ≤ k ≤ 26 ) 이 주어지며, 그 다음 줄엔 공백으로 구분되어 조각의 이름들이 주어진다. ( [a-z] 에 포함되는 알파벳 ).

다음 k개의 줄엔 생산 공정 표가 주어진다. 각 줄은 k개의 문자열로 이루어져 있으며, i행 j열의 값은 i번째 부품을 j번째 부품과 조립하는 데에 걸리는 시간과 결과물을 나타낸다. 조립에 걸리는 시간은 0 이상 1000000 이하의 정수이며, 결과물로 잘못된 문자가 주어지는 경우는 없다.

그 다음 줄엔 정수 n이 주어지며, 만들고자 하는 완성품의 갯수이다.

다음 n줄엔 완성품의 형태가 주어진다.

각 완성품은 200개 이하의 부품으로 이루어져 있으며, 주어진 형태를 변경하여 조립할 수는 없다.

k=0일 경우 프로그램을 종료하며 이 경우엔 아무 것도 출력하지 않는다.

출력

각 테스트 케이스에 대해, 각 완성품을 가장 빨리 만들 수 있는 경우에 걸리는 시간과 그 때의 결과물을 time-result 의 형태로 한 줄에 하나씩 출력한다. 만일 그러한 것이 여러가지라면 결과물이 처음 주어진 부품의 목록에서 더 먼저 등장한 것을 출력한다. 예를 들어, 결과로 5-b와 5-c가 가능하며, 테스트 케이스의 두 번째 줄에서 입력받은 부품의 목록이 a c b 였다면 5-c를 출력하면 된다.

각 테스트 케이스의 사이엔 빈 줄을 하나 출력한다.

예제 입력 1

2
a b
3-b 5-b
6-a 2-b
2
aba
bba
2
m e
5-e 4-m
3-e 4-m
1
eme
0

예제 출력 1

9-b
8-a

7-m
W3sicHJvYmxlbV9pZCI6IjM4NTIiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWMwZGRcdWMwYjAgXHVhY2Y1XHVjODE1IiwiZGVzY3JpcHRpb24iOiI8cD5cdWQ2MDRcdWM4ODVcdWM3NzRcdWIyOTQgXHVhY2Y1XHVjN2E1IFx1YjE3OFx1YjNkOVx1Yzc5MFx1Yzc3NFx1YjJlNC4gXHViZDgwXHVkNDdjIFx1YWZjOFx1Yzc0NCBcdWM1NDhcdWFjZTAgXHVjNzg1XHVjMGFjXHVkNTc0IDIwXHViMTQ0XHVhYzA0IFx1Yzc3Y1x1ZDU3NFx1YzY1NFx1YzczY1x1YjA5OCwgXHViOWNjXHVjNzdjIFx1Yzc3NFx1YmM4OCBcdWIyZWNcdWM1ZDAmbmJzcDtcdWMwZGRcdWMwYjAgXHVkNmE4XHVjNzI4XHVjNzc0IFx1Yzk5ZFx1YWMwMFx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTRcdWJhNzQgXHViMmU0XHVjNzRjIFx1YjJlY1x1YzVkMCBcdWQ1NzRcdWFjZTBcdWI0MjAgXHVhYzgzXHVjNzc0XHViNzdjXHViMjk0IFx1Y2NhZFx1Y2M5Y1x1YmNiZFx1YjgyNVx1YWMxOVx1Yzc0MCBcdWMxOGNcdWMyZGRcdWM3NDQgXHViNGUzXHVhY2UwIFx1YjlkMFx1YzU1OFx1YjJlNC4gXHVkNjA0XHVjODg1XHVjNzc0XHVjNzU4IFx1Yzc3Y1x1Yzc0MCBcdWFjMDRcdWIyZThcdWQ1NThcdWIyZTQuIFx1YzhmY1x1YzViNFx1YzljNCBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgXHVjODcwXHVhYzAxXHVjNzQ0IFx1Yzg3MFx1YjliZFx1ZDU1OFx1YzVlYyBcdWM4MWNcdWQ0ODhcdWM3NDQgXHVjODFjXHVjNzkxXHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjIFx1Yzg3MFx1YWMwMSBhLCBiLCBjXHViOTdjIFx1Yzg3MFx1YjliZFx1ZDU2MCBcdWI1NGMsIGEtYiBcdWI5N2MgXHVjODcwXHViOWJkXHVkNTVjIFx1YjRhNCBjXHViOTdjIFx1Yzc3NFx1YzViNFx1YmQ5OVx1Yzc3NFx1YjI5NCBcdWFjODNcdWFjZmMgYi1jXHViOTdjIFx1Yzg3MFx1YjliZFx1ZDU1YyBcdWI0YTQgYVx1Yjk3YyBcdWM3NzRcdWM1YjRcdWJkOTlcdWM3NzRcdWIyOTQgXHViMzcwXHVjNWQwIFx1YWM3OFx1YjlhY1x1YjI5NCBcdWMyZGNcdWFjMDRcdWM3NzQgXHViMmU0XHViOTc0XHViMmU0LiBcdWQ2MDRcdWM4ODVcdWM3NzRcdWIyOTQmbmJzcDtcdWM1NDRcdWI5YzggXHVjNzc0IFx1YWNmNVx1YzgxNVx1Yzc0NCBcdWQ2YThcdWM3MjhcdWM4MDFcdWM3M2NcdWI4NWMgXHVhYzFjXHVjMTIwXHVkNTU4XHViYTc0IFx1YWNmNVx1YzdhNSBcdWM3N2NcdWM3NDQgXHVhY2M0XHVjMThkXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWM3NDQgXHVhYzgzXHVjNzc0XHViNzdjIFx1ZDMxMFx1YjJlOFx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVkNjA0XHVjODg1XHVjNzc0XHViOTdjIFx1YjNkNVx1YWUzMCBcdWM3MDRcdWQ1NzQsIFx1YjJmOVx1YzJlMFx1Yzc0MCBcdWJhYThcdWI0ZTAgXHVjODcwXHVhYzAxXHVjNzQ0IFx1Yzg3MFx1YjliZFx1ZDU1OFx1YjI5NCBcdWNkNWNcdWM4MDFcdWM3NTggXHViYzI5XHViYzk1XHVjNzQ0IFx1YzU0Y1x1YjgyNFx1YzhmY1x1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC4mbmJzcDtcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NTggXHVjY2FiIFx1YzkwNFx1YzVkMCBcdWM4NzBcdWFjMDFcdWM3NTggXHViYWE5XHViODVkXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNCBcdWI0YTQsIFx1YWRmOCBcdWIyZTRcdWM3NGMgXHVjOTA0XHViZDgwXHVkMTMwJm5ic3A7XHVjODcwXHVhYzAxXHVjNzQ0IFx1Yzc3NFx1YzViNFx1YmQ5OVx1Yzc3NFx1YjI5NCBcdWIzNzBcdWM1ZDAgXHVhYzc4XHViOWFjXHViMjk0IFx1YzJkY1x1YWMwNFx1YWNmYyBcdWFkZjggXHVhY2IwXHVhY2ZjXHViYjNjXHVjNzc0IFx1ZDQ1YyBcdWQ2MTVcdWQwZGNcdWI4NWMgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWM4MWNcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHA+PGltZyBzcmM9XCJcL3VwbG9hZFwvaW1hZ2VzXC9hc3NlbWJsZS5wbmdcIiBcLz48XC9wPlxyXG5cclxuPHA+YVx1YzY0MCBhXHViOTdjIFx1Yzc3NFx1YzViNFx1YmQ5OVx1Yzc3NFx1YjI5NCBcdWIzNzBcdWM1ZDQgM1x1Yzc1OCBcdWMyZGNcdWFjMDRcdWM3NzQgXHVhYzc4XHViOWFjXHVhY2UwLCBcdWFkZjggXHVhY2IwXHVhY2ZjXHViMjk0IFx1YmQ4MFx1ZDQ4OCBiXHVhYzAwIFx1YjQxY1x1YjJlNC4gXHVhZGY4XHViOWFjXHVhY2UwJm5ic3A7XHVjNzc0XHVhYzgzXHVjNzU4IFx1YjRhNFx1YzVkMCBcdWIyZTRcdWMyZGMgYVx1Yjk3YyBcdWM3NzRcdWM1YjRcdWJkOTlcdWM3NzRcdWIyOTQgXHViMzcwXHVjNWQ0IDZcdWM3NTggXHVjMmRjXHVhYzA0XHVjNzc0IFx1YWM3OFx1YjliNCBcdWFjODNcdWM3NzRcdWIyZTQuJm5ic3A7XHVkNDVjXHViMjk0IFx1YjMwMFx1Y2U2ZFx1Yzc3NCBcdWM1NDRcdWIyZDAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gYi1hXHViOTdjIFx1Yzg3MFx1YjliZFx1ZDU1OFx1YjI5NCBcdWMyZGNcdWFjMDRcdWFjZmMgYS1iXHViOTdjIFx1Yzg3MFx1YjliZFx1ZDU1OFx1YjI5NCBcdWMyZGNcdWFjMDRcdWM3NzQgXHViMmU0XHViOTdjIFx1YzIxOCBcdWM3ODhcdWIyZTRcdWIyOTQgXHVjNzU4XHViYmY4XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWI5Y2NcdWM3N2MgXHViOWNjXHViNGU0XHVhY2UwXHVjNzkwIFx1ZDU1OFx1YjI5NCBcdWM2NDRcdWMxMzFcdWQ0ODhcdWM3NzQgYWJhXHViNzdjXHViYTc0LCBcdWI0NTAgXHVhYzAwXHVjOWMwIFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWFjYmRcdWM2YjBcdWIyOTQgXHViMmU0XHVjNzRjXHVhY2ZjIFx1YWMxOVx1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4oYWIpYSA9IGJhID0gYSAsIFx1YWM3OFx1YjlhY1x1YjI5NCBcdWMyZGNcdWFjMDQgPSB0aW1lKGFiKSArIHRpbWUoYmEpID0gNSArIDYgPTExPFwvbGk+XHJcblx0PGxpPmEoYmEpID0gYWEgPSBiJm5ic3A7LCBcdWFjNzhcdWI5YWNcdWIyOTQgXHVjMmRjXHVhYzA0ID0gdGltZShiYSkgKyB0aW1lKGFhKSA9IDYgKyAzID0gOTxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlx1YjUzMFx1Yjc3Y1x1YzExYyBcdWNkOWNcdWI4MjVcdWM3NDAgOS1iXHVhYzAwIFx1YjQyMCBcdWFjODNcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWM3ODVcdWI4MjVcdWM3NDAgXHVjNWVjXHViN2VjIFx1YWMxY1x1Yzc1OCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1Y2NhYiBcdWM5MDRcdWM1ZDQgXHVjNzkwXHVjNWYwXHVjMjE4IGsgKCAxJm5ic3A7JmxlOyBrJm5ic3A7JmxlOyAyNiApIFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIFx1YWRmOCBcdWIyZTRcdWM3NGMgXHVjOTA0XHVjNWQ0IFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjODcwXHVhYzAxXHVjNzU4IFx1Yzc3NFx1Yjk4NFx1YjRlNFx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuICggW2Etel0gXHVjNWQwIFx1ZDNlY1x1ZDU2OFx1YjQxOFx1YjI5NCBcdWM1NGNcdWQzMGNcdWJjYjMgKS48XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIGtcdWFjMWNcdWM3NTggXHVjOTA0XHVjNWQ0IFx1YzBkZFx1YzBiMCBcdWFjZjVcdWM4MTUgXHVkNDVjXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gXHVhYzAxIFx1YzkwNFx1Yzc0MCBrXHVhYzFjXHVjNzU4IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHVjNzNjXHViYTcwLCBpXHVkNTg5IGpcdWM1ZjRcdWM3NTggXHVhYzEyXHVjNzQwIGlcdWJjODhcdWM5ZjggXHViZDgwXHVkNDg4XHVjNzQ0IGpcdWJjODhcdWM5ZjggXHViZDgwXHVkNDg4XHVhY2ZjIFx1Yzg3MFx1YjliZFx1ZDU1OFx1YjI5NCBcdWIzNzBcdWM1ZDAgXHVhYzc4XHViOWFjXHViMjk0IFx1YzJkY1x1YWMwNFx1YWNmYyBcdWFjYjBcdWFjZmNcdWJiM2NcdWM3NDQgXHViMDk4XHVkMGMwXHViMGI4XHViMmU0LiBcdWM4NzBcdWI5YmRcdWM1ZDAgXHVhYzc4XHViOWFjXHViMjk0IFx1YzJkY1x1YWMwNFx1Yzc0MCAwIFx1Yzc3NFx1YzBjMSAxMDAwMDAwIFx1Yzc3NFx1ZDU1OFx1Yzc1OCBcdWM4MTVcdWMyMThcdWM3NzRcdWJhNzAsIFx1YWNiMFx1YWNmY1x1YmIzY1x1Yjg1YyBcdWM3OThcdWJhYmJcdWI0MWMgXHViYjM4XHVjNzkwXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljMFx1YjI5NCBcdWFjYmRcdWM2YjBcdWIyOTQgXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFkZjggXHViMmU0XHVjNzRjIFx1YzkwNFx1YzVkNCBcdWM4MTVcdWMyMTggblx1Yzc3NCBcdWM4ZmNcdWM1YjRcdWM5YzBcdWJhNzAsIFx1YjljY1x1YjRlNFx1YWNlMFx1Yzc5MCBcdWQ1NThcdWIyOTQgXHVjNjQ0XHVjMTMxXHVkNDg4XHVjNzU4IFx1YWMyZlx1YzIxOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIG5cdWM5MDRcdWM1ZDQgXHVjNjQ0XHVjMTMxXHVkNDg4XHVjNzU4IFx1ZDYxNVx1ZDBkY1x1YWMwMCBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWMwMSZuYnNwO1x1YzY0NFx1YzEzMVx1ZDQ4OFx1Yzc0MCAyMDBcdWFjMWMgXHVjNzc0XHVkNTU4XHVjNzU4IFx1YmQ4MFx1ZDQ4OFx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWM4ZmNcdWM1YjRcdWM5YzQgXHVkNjE1XHVkMGRjXHViOTdjIFx1YmNjMFx1YWNiZFx1ZDU1OFx1YzVlYyZuYnNwO1x1Yzg3MFx1YjliZFx1ZDU2MCBcdWMyMThcdWIyOTQgXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5rPTBcdWM3N2MgXHVhY2JkXHVjNmIwIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1Yzc0NCBcdWM4ODVcdWI4Y2NcdWQ1NThcdWJhNzAgXHVjNzc0IFx1YWNiZFx1YzZiMFx1YzVkNCBcdWM1NDRcdWJiMzQgXHVhYzgzXHViM2M0IFx1Y2Q5Y1x1YjgyNVx1ZDU1OFx1YzljMCBcdWM1NGFcdWIyOTRcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM1ZDAgXHViMzAwXHVkNTc0LCBcdWFjMDEgXHVjNjQ0XHVjMTMxXHVkNDg4XHVjNzQ0IFx1YWMwMFx1YzdhNSBcdWJlNjhcdWI5YWMgXHViOWNjXHViNGU0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVhY2JkXHVjNmIwXHVjNWQwIFx1YWM3OFx1YjlhY1x1YjI5NCBcdWMyZGNcdWFjMDRcdWFjZmMgXHVhZGY4IFx1YjU0Y1x1Yzc1OCBcdWFjYjBcdWFjZmNcdWJiM2NcdWM3NDQgdGltZS1yZXN1bHQgXHVjNzU4IFx1ZDYxNVx1ZDBkY1x1Yjg1YyBcdWQ1NWMgXHVjOTA0XHVjNWQwIFx1ZDU1OFx1YjA5OFx1YzUyOSZuYnNwO1x1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHViOWNjXHVjNzdjIFx1YWRmOFx1YjdlY1x1ZDU1YyBcdWFjODNcdWM3NzQgXHVjNWVjXHViN2VjXHVhYzAwXHVjOWMwXHViNzdjXHViYTc0IFx1YWNiMFx1YWNmY1x1YmIzY1x1Yzc3NCBcdWNjOThcdWM3NGMgXHVjOGZjXHVjNWI0XHVjOWM0IFx1YmQ4MFx1ZDQ4OFx1Yzc1OCBcdWJhYTlcdWI4NWRcdWM1ZDBcdWMxMWMgXHViMzU0IFx1YmEzY1x1YzgwMCBcdWI0ZjFcdWM3YTVcdWQ1NWMgXHVhYzgzXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVjNjA4XHViOTdjIFx1YjRlNFx1YzViNCwgXHVhY2IwXHVhY2ZjXHViODVjIDUtYlx1YzY0MCA1LWNcdWFjMDAgXHVhYzAwXHViMmE1XHVkNTU4XHViYTcwLCBcdWQxNGNcdWMyYTRcdWQyYjggXHVjZjAwXHVjNzc0XHVjMmE0XHVjNzU4IFx1YjQ1MCBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwXHVjMTFjIFx1Yzc4NVx1YjgyNVx1YmMxYlx1Yzc0MCBcdWJkODBcdWQ0ODhcdWM3NTggXHViYWE5XHViODVkXHVjNzc0IGEgYyBiIFx1YzYwMFx1YjJlNFx1YmE3NCA1LWNcdWI5N2MgXHVjZDljXHViODI1XHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhYzAxIFx1ZDE0Y1x1YzJhNFx1ZDJiOCBcdWNmMDBcdWM3NzRcdWMyYTRcdWM3NTggXHVjMGFjXHVjNzc0XHVjNWQ0IFx1YmU0OCBcdWM5MDRcdWM3NDQgXHVkNTU4XHViMDk4IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWQ1NWNcdWFkNmRcdWM1YjQifSx7InByb2JsZW1faWQiOiIzODUyIiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiQXNzZW1ibHkgbGluZSIsImRlc2NyaXB0aW9uIjoiPHA+VGhlIGxhc3Qgd29ya2VyIGluIGEgcHJvZHVjdGlvbiBsaW5lIGF0IHRoZSBmYWN0b3J5IG9mIEF1dG9tYXRlZCBDb21wb3NlZCBNYWNoaW5lcnkgaXMgd29ycmllZC4gU2hlIGtub3dzIHRoYXQgaGVyIGpvYiBoYW5ncyBpbiB0aGUgYmFsYW5jZSB1bmxlc3MgaGVyIHByb2R1Y3Rpdml0eSBpbmNyZWFzZXMuIEhlciB3b3JrIGNvbnNpc3RzIG9mIGFzc2VtYmxpbmcgYSBzZXQgb2YgcGllY2VzIGluIGEgZ2l2ZW4gc2VxdWVuY2UsIGJ1dCB0aGUgdGltZSBzcGVudCBvbiBhc3NlbWJsaW5nIHBpZWNlcyBhIGFuZCBiIGFuZCB0aGVuIGMgbWF5IG5vdCB0aGUgc2FtZSBhcyB0aGF0IG9uIGFzc2VtYmxpbmcgcGllY2VzIGIgYW5kIGMsIGFuZCB0aGVuIGFzc2VtYmxpbmcgYSB3aXRoIHRoZSByZXN1bHRpbmcgY29tcG9uZW50LiBPbmx5IHR3byBjb25zZWN1dGl2ZSBwaWVjZXMgbWF5IGJlIGFzc2VtYmxlZCBhdCBhIHRpbWUsIGFuZCBvbmNlIHRoZXkgYXJlIGFzc2VtYmxlZCB0aGV5IGJlaGF2ZSBhcyBhbm90aGVyIHBpZWNlIGluIHRlcm1zIG9mIHRoZSB0aW1lIG5lZWRlZCBmb3IgZnVydGhlciBhc3NlbWJseS48XC9wPlxyXG5cclxuPHA+SW4gb3JkZXIgdG8gYWlkIGhlciwgeW91IG5lZWQgdG8gZmluZCB0aGUgb3B0aW1hbCB3YXkgdG8gYXNzZW1ibGUgYWxsIGNvbXBvbmVudHMuIFRoZSBpbnB1dCB0byB5b3VyIHByb2dyYW0gd2lsbCBiZSBhIHNldCBvZiBzeW1ib2xzIHJlcHJlc2VudGluZyAodHlwZXMgb2YpIHBpZWNlcywgYW5kIGEgc28tY2FsbGVkIGFzc2VtYmx5IHRhYmxlIHJlcHJlc2VudGluZyB0aGUgdGltZSBpdCB0YWtlcyB0byBhc3NlbWJsZSB0aGVtLCBhcyB3ZWxsIGFzIHRoZSB0eXBlIG9mIHRoZSByZXN1bHRpbmcgY29tcG9uZW50LiBGb3IgaW5zdGFuY2UsIHdlIG1heSBoYXZlIHR3byBzeW1ib2xzIHthLCBifSwgYW5kIHRoZSBmb2xsb3dpbmcgdGFibGU6PFwvcD5cclxuXHJcbjxwPjxpbWcgYWx0PVwiXCIgc3JjPVwiXC91cGxvYWRcL2ltYWdlc1wvYXNzZW1ibGUucG5nXCIgc3R5bGU9XCJoZWlnaHQ6NzBweDsgd2lkdGg6MTA5cHhcIiBcLz48XC9wPlxyXG5cclxuPHA+VGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgdHdvIHBpZWNlcyBvZiB0eXBlIGEgYW5kIGEgbWF5IGFzc2VtYmxlZCBpbiAzIG1pbnV0ZXMsIGFuZCB0aGUgcmVzdWx0IGlzIGEgY29tcG9uZW50IG9mIHR5cGUgYiwgaW4gdGhhdCB0aGUgdGltZSByZXF1aXJlZCB0byBhc3NlbWJsZSBpdCBhZ2FpbiB3aXRoIGFub3RoZXIgcGllY2Ugb2YsIHNheSwgdHlwZSBhIGlzIDYgbWludXRlcywgYW5kIHNvIG9uLiBOb3RlIHRoYXQgdGhlIHRhYmxlIGlzIG5vdCBzeW1tZXRyaWMsIGkuZS4gYXNzZW1ibGluZyBiIGFuZCBhIG1heSBiZSBtb3JlIHRpbWUtY29uc3VtaW5nIHRoYW4gYSBhbmQgYi48XC9wPlxyXG5cclxuPHA+Rm9yIGEgc2VxdWVuY2Ugb2YgY29tcG9uZW50cyBsYWJlbGxlZCBhYmEsIHRoZSB0d28gcG9zc2libGUgc29sdXRpb25zIGFyZTo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4oYWIpYSA9IGJhID0gYSB3aXRoIHRpbWUgdGltZShhYikgKyB0aW1lKGJhKSA9IDUgKyA2ID0gMTEuPFwvbGk+XHJcblx0PGxpPmEoYmEpID0gYWEgPSBiIHdpdGggdGltZSB0aW1lKGJhKSArIHRpbWUoYWEpID0gNiArIDMgPSA5LjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPlNvIHRoZSByZXN1bHQgZm9yIHRoaXMgY2FzZSB3b3VsZCBiZSBhIHBpZWNlIG9mIHR5cGUgYiBpbiA5IG1pbnV0ZXMgKGRlbm90ZWQgOS1iKS48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBpbnB1dCBjb25zaXN0cyBvZiBzZXZlcmFsIHRlc3QgY2FzZXMuIEVhY2ggdGVzdCBjYXNlIGJlZ2lucyB3aXRoIGEgbGluZSBjb250YWluaW5nIGEgbmF0dXJhbCBudW1iZXIgayAoMSAmbGU7IGsgJmxlOyAyNiksIGZvbGxvd2VkIGJ5IGEgbGluZSB3aXRoIGsgc3ltYm9scyAoY2hhcmFjdGVycyBpbiBbYS16XSkgc2VwYXJhdGVkIGJ5IHNwYWNlcy4gVGhlIGZvbGxvd2luZyBrIGxpbmVzIGNvbnRhaW4gdGhlIGFzc2VtYmx5IHRhYmxlOiB0aGUgaS10aCBsaW5lIGhhcyBrIHBhaXJzIG9mIHRoZSBmb3JtIHRpbWUtcmVzdWx0LCB3aGVyZSB0aW1lIGlzIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxIDAwMCAwMDAgaW5jbHVzaXZlLCBhbmQgcmVzdWx0IGEgc3ltYm9sIGJlbG9uZ2luZyB0byB0aGUgcHJlY2VkaW5nIHNldC4gVGhlIGotdGggcGFpciBpbiB0aGUgaS10aCBsaW5lIHJlcHJlc2VudHMgdGhlIHRpbWUgdG8gY29tcG9zZSBwaWVjZXMgb2YgdHlwZXMgcmVwcmVzZW50ZWQgYnkgdGhlIGktdGggYW5kIGotdGggc3ltYm9scywgYWxvbmcgd2l0aCB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0aW5nIHBpZWNlLiBBZnRlciB0aGUgdGFibGUsIGEgbGluZSB3aXRoIGFuIGludGVnZXIgbiBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBsaW5lcyB0aGF0IGZvbGxvdywgZWFjaCBsaW5lIGJlaW5nIGEgc3RyaW5nIG9mIGF0IG1vc3QgMjAwIHN5bWJvbHMuIEVhY2ggb2YgdGhlc2UgbGluZXMgaXMgYSBzZXF1ZW5jZSBvZiBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBiZSBhc3NlbWJsZWQgdG9nZXRoZXIgaW4gdGhlIHJpZ2h0IG9yZGVyLjxcL3A+XHJcblxyXG48cD5UaGUgaW5wdXQgd2lsbCBmaW5pc2ggd2l0aCBhIGxpbmUgY29udGFpbmluZyAwLCB3aGljaCBzaG91bGQgbm90IGJlIHByb2Nlc3NlZC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5Gb3IgZWFjaCB0ZXN0IGNhc2UsIHByaW50IG4gbGluZXMsIGVhY2ggd2l0aCBhbiBpbnRlZ2VyIHRpbWUgYW5kIGEgc3ltYm9sIHJlc3VsdCBpbiB0aGUgZm9ybWF0IHRpbWUtcmVzdWx0LiBFYWNoIGxpbmUgcmVwcmVzZW50cyB0aGUgbWluaW11bSB0aW1lIGFuZCB0aGUgdHlwZSBvZiB0aGUgcmVzdWx0aW5nIHBpZWNlIGZvciB0aGUgY29ycmVzcG9uZGluZyBjYXNlIGluIHRoZSBpbnB1dC4gSW4gY2FzZSBvZiBhIHRpZSBhbW9uZyBzZXZlcmFsIHBvc3NpYmxlIHJlc3VsdHMgd2l0aCB0aGUgc2FtZSBtaW5pbXVtIHRpbWUsIGNob29zZSBmcm9tIGFtb25nIHRob3NlIHRoZSBwaWVjZSB3aG9zZSB0eXBlIGxldHRlciBhcHBlYXJzIGZpcnN0IGluIHRoZSBsaW5lIHRoYXQgY29udGFpbmVkIHRoZSBrIHN5bWJvbHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGVzdCBjYXNlLiAoRm9yIGV4YW1wbGUsIGlmIHRoYXQgbGluZSB3YXMgYSBjIGIgYW5kIGJvdGggYyBhbmQgYiBjYW4gYmUgb2J0YWluZWQgd2l0aCBtaW5pbXVtIGNvc3QgNSwgcHJpbnQgNS1jKS48XC9wPlxyXG5cclxuPHA+VGhlcmUgbXVzdCBiZSBhbiBlbXB0eSBsaW5lIGJldHdlZW4gdGhlIG91dHB1dCBvZiBkaWZmZXJlbnQgdGVzdCBjYXNlcy48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwicHJvYmxlbV9sYW5nX2NvZGUiOiJcdWM2MDFcdWM1YjQifV0=