시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
3 초 128 MB 26 9 7 41.176%

문제

상근이는 도시를 오고가며 짐을 실고 내리는 트럭 운전사이다. 상근이의 트럭은 매우 커서, 짐을 무제한으로 담을 수 있다. 상근이는 대학시절 배운 프로그래밍을 이용해서 자동으로 짐을 실고 내릴 수 있는 기능을 트럭에 추가했다. 유난히도 스택을 좋아하는 상근이는 스택을 이 기능에 이용했다. 따라서, 마지막으로 실은 짐만 내릴 수 있다.

상근이는 짐을 26가지 종류로 구분했다. 이러한 짐은 알파벳으로 나타낼 수 있다. (대소문자는 구분하지 않는다)

도시의 도로는 모두 일방통행이고, 길이는 모두 1 킬로미터이다. 또, 도로는 모두 세 종류로 나눌 수 있다. 이 도로는 1번 도로, 2번 도로, 3번 도로라고 한다.

1번 도로를 지날 때는 그 도로에 해당하는 짐을 하나 실어야 하고, 2번 도로는 짐을 하나 내려야 한다. 3번 도로는 짐을 실거나 내리지 않고 지나가야 한다.

도시는 N개, 도로는 E개가 있다 상근이는 1번 도시에서 출발해서 N번 도시에 도착해야 한다. N번 도시에 도착했을 때, 트럭은 비어있어도 되고, 안 비어있어도 된다.

상근이가 N번 도시로 도착하는 방법의 수를 계산하는 프로그램을 작성하시오. 단, 상근이는 최대 K 킬로미터만 이동할 수 있다.

입력

첫째 줄에 도시의 수 N, 도로의 수 E, 이동할 수 있는 최대 거리 K가 주어진다. (2 ≤ N ≤ 50, 1 ≤ E ≤ 2450, 1 ≤ K ≤ 50)

다음 E개 줄에는 도로의 정보가 주어진다. 각 도로의 종류에 따라 다른 형식으로 주어진다.

1번 도로: "x y C" x에서 y로 향하는 도로이다. 이 도로를 지날 때, C(대문자)에 해당하는 짐을 실어야 한다.

2번 도로: "x y c" x에서 y로 향하는 도로이다. 이 도로를 지날 때, c(소문자)에 해당하는 짐을 내려야 한다.

3번 도로: "x y" x에서 y로 향하는 도로이며, 그 어

두 도시를 연결하는 도로의 수가 두 개 이상인 경우는 없다. (단, 방향이 다를 수는 있다) 또, x와 y가 같은 경우도 없다.

출력

첫째 줄에 상근이가 1번 도시에서 출발해서 N번 도시로 도착하는 방법의 수를 출력한다. 수가 매우 커질 수 있기 때문에 10007로 나눈 나머지를 출력해야 한다.

예제 입력 1

7 9 5
1 2 A
2 3 B
2 5
5 3 C
3 4 b
3 6 c
3 7
4 7 a
6 7 a

예제 출력 1

4
W3sicHJvYmxlbV9pZCI6IjI4MzciLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWQyYjhcdWI3ZWQgXHVjNmI0XHVjODA0XHVjMGFjIFx1YzBjMVx1YWRmYyIsImRlc2NyaXB0aW9uIjoiPHA+XHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IFx1YjNjNFx1YzJkY1x1Yjk3YyBcdWM2MjRcdWFjZTBcdWFjMDBcdWJhNzAgXHVjOWQwXHVjNzQ0IFx1YzJlNFx1YWNlMCBcdWIwYjRcdWI5YWNcdWIyOTQgXHVkMmI4XHViN2VkIFx1YzZiNFx1YzgwNFx1YzBhY1x1Yzc3NFx1YjJlNC4gXHVjMGMxXHVhZGZjXHVjNzc0XHVjNzU4IFx1ZDJiOFx1YjdlZFx1Yzc0MCBcdWI5ZTRcdWM2YjAgXHVjZWU0XHVjMTFjLCBcdWM5ZDBcdWM3NDQgXHViYjM0XHVjODFjXHVkNTVjXHVjNzNjXHViODVjIFx1YjJmNFx1Yzc0NCBcdWMyMTggXHVjNzg4XHViMmU0LiZuYnNwO1x1YzBjMVx1YWRmY1x1Yzc3NFx1YjI5NCBcdWIzMDBcdWQ1NTlcdWMyZGNcdWM4MDggXHViYzMwXHVjNmI0IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1Yjc5OFx1YmMwZFx1Yzc0NCBcdWM3NzRcdWM2YTlcdWQ1NzRcdWMxMWMgXHVjNzkwXHViM2Q5XHVjNzNjXHViODVjIFx1YzlkMFx1Yzc0NCBcdWMyZTRcdWFjZTAgXHViMGI0XHViOWI0IFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVhZTMwXHViMmE1XHVjNzQ0IFx1ZDJiOFx1YjdlZFx1YzVkMCBcdWNkOTRcdWFjMDBcdWQ1ODhcdWIyZTQuIFx1YzcyMFx1YjA5Y1x1ZDc4OFx1YjNjNCBcdWMyYTRcdWQwZGRcdWM3NDQgXHVjODhiXHVjNTQ0XHVkNTU4XHViMjk0IFx1YzBjMVx1YWRmY1x1Yzc3NFx1YjI5NCBcdWMyYTRcdWQwZGRcdWM3NDQgXHVjNzc0IFx1YWUzMFx1YjJhNVx1YzVkMCBcdWM3NzRcdWM2YTlcdWQ1ODhcdWIyZTQuIFx1YjUzMFx1Yjc3Y1x1YzExYywgXHViOWM4XHVjOWMwXHViOWM5XHVjNzNjXHViODVjIFx1YzJlNFx1Yzc0MCBcdWM5ZDBcdWI5Y2MgXHViMGI0XHViOWI0IFx1YzIxOCBcdWM3ODhcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzBjMVx1YWRmY1x1Yzc3NFx1YjI5NCBcdWM5ZDBcdWM3NDQgMjZcdWFjMDBcdWM5YzAgXHVjODg1XHViOTU4XHViODVjIFx1YWQ2Y1x1YmQ4NFx1ZDU4OFx1YjJlNC4gXHVjNzc0XHViN2VjXHVkNTVjIFx1YzlkMFx1Yzc0MCBcdWM1NGNcdWQzMGNcdWJjYjNcdWM3M2NcdWI4NWMgXHViMDk4XHVkMGMwXHViMGJjIFx1YzIxOCBcdWM3ODhcdWIyZTQuIChcdWIzMDBcdWMxOGNcdWJiMzhcdWM3OTBcdWIyOTQgXHVhZDZjXHViZDg0XHVkNTU4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNCk8XC9wPlxyXG5cclxuPHA+XHViM2M0XHVjMmRjXHVjNzU4IFx1YjNjNFx1Yjg1Y1x1YjI5NCBcdWJhYThcdWI0NTAgXHVjNzdjXHViYzI5XHVkMWI1XHVkNTg5XHVjNzc0XHVhY2UwLCBcdWFlMzhcdWM3NzRcdWIyOTQgXHViYWE4XHViNDUwIDEgXHVkMGFjXHViODVjXHViYmY4XHVkMTMwXHVjNzc0XHViMmU0LiBcdWI2MTAsIFx1YjNjNFx1Yjg1Y1x1YjI5NCBcdWJhYThcdWI0NTAgXHVjMTM4IFx1Yzg4NVx1Yjk1OFx1Yjg1YyBcdWIwOThcdWIyMGMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNzc0IFx1YjNjNFx1Yjg1Y1x1YjI5NCAxXHViYzg4IFx1YjNjNFx1Yjg1YywgMlx1YmM4OCBcdWIzYzRcdWI4NWMsIDNcdWJjODggXHViM2M0XHViODVjXHViNzdjXHVhY2UwIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+MVx1YmM4OCBcdWIzYzRcdWI4NWNcdWI5N2MgXHVjOWMwXHViMGEwIFx1YjU0Y1x1YjI5NCBcdWFkZjggXHViM2M0XHViODVjXHVjNWQwIFx1ZDU3NFx1YjJmOVx1ZDU1OFx1YjI5NCBcdWM5ZDBcdWM3NDQgXHVkNTU4XHViMDk4IFx1YzJlNFx1YzViNFx1YzU3YyBcdWQ1NThcdWFjZTAsIDJcdWJjODggXHViM2M0XHViODVjXHViMjk0IFx1YzlkMFx1Yzc0NCBcdWQ1NThcdWIwOTggXHViMGI0XHViODI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gM1x1YmM4OCBcdWIzYzRcdWI4NWNcdWIyOTQgXHVjOWQwXHVjNzQ0IFx1YzJlNFx1YWM3MFx1YjA5OCBcdWIwYjRcdWI5YWNcdWM5YzAgXHVjNTRhXHVhY2UwIFx1YzljMFx1YjA5OFx1YWMwMFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjNjNFx1YzJkY1x1YjI5NCBOXHVhYzFjLCBcdWIzYzRcdWI4NWNcdWIyOTQgRVx1YWMxY1x1YWMwMCBcdWM3ODhcdWIyZTQgXHVjMGMxXHVhZGZjXHVjNzc0XHViMjk0IDFcdWJjODggXHViM2M0XHVjMmRjXHVjNWQwXHVjMTFjIFx1Y2Q5Y1x1YmMxY1x1ZDU3NFx1YzExYyBOXHViYzg4IFx1YjNjNFx1YzJkY1x1YzVkMCBcdWIzYzRcdWNjMjlcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LiBOXHViYzg4IFx1YjNjNFx1YzJkY1x1YzVkMCBcdWIzYzRcdWNjMjlcdWQ1ODhcdWM3NDQgXHViNTRjLCBcdWQyYjhcdWI3ZWRcdWM3NDAgXHViZTQ0XHVjNWI0XHVjNzg4XHVjNWI0XHViM2M0IFx1YjQxOFx1YWNlMCwgXHVjNTQ4IFx1YmU0NFx1YzViNFx1Yzc4OFx1YzViNFx1YjNjNCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzBjMVx1YWRmY1x1Yzc3NFx1YWMwMCBOXHViYzg4IFx1YjNjNFx1YzJkY1x1Yjg1YyBcdWIzYzRcdWNjMjlcdWQ1NThcdWIyOTQgXHViYzI5XHViYzk1XHVjNzU4IFx1YzIxOFx1Yjk3YyBcdWFjYzRcdWMwYjBcdWQ1NThcdWIyOTQgXHVkNTA0XHViODVjXHVhZGY4XHViN2E4XHVjNzQ0IFx1Yzc5MVx1YzEzMVx1ZDU1OFx1YzJkY1x1YzYyNC4gXHViMmU4LCBcdWMwYzFcdWFkZmNcdWM3NzRcdWIyOTQgXHVjZDVjXHViMzAwIEsgXHVkMGFjXHViODVjXHViYmY4XHVkMTMwXHViOWNjIFx1Yzc3NFx1YjNkOVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcbiIsImlucHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWIzYzRcdWMyZGNcdWM3NTggXHVjMjE4IE4sIFx1YjNjNFx1Yjg1Y1x1Yzc1OCBcdWMyMTggRSwgXHVjNzc0XHViM2Q5XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyOTQgXHVjZDVjXHViMzAwIFx1YWM3MFx1YjlhYyBLXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKDIgJmxlOyBOICZsZTsgNTAsIDEgJmxlOyBFICZsZTsgMjQ1MCwgMSAmbGU7IEsgJmxlOyA1MCk8XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIEVcdWFjMWMgXHVjOTA0XHVjNWQwXHViMjk0IFx1YjNjNFx1Yjg1Y1x1Yzc1OCBcdWM4MTVcdWJjZjRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHViM2M0XHViODVjXHVjNzU4IFx1Yzg4NVx1Yjk1OFx1YzVkMCBcdWI1MzBcdWI3N2MgXHViMmU0XHViOTc4IFx1ZDYxNVx1YzJkZFx1YzczY1x1Yjg1YyBcdWM4ZmNcdWM1YjRcdWM5YzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPjFcdWJjODggXHViM2M0XHViODVjOiAmcXVvdDt4IHkgQyZxdW90OyB4XHVjNWQwXHVjMTFjIHlcdWI4NWMgXHVkNWE1XHVkNTU4XHViMjk0IFx1YjNjNFx1Yjg1Y1x1Yzc3NFx1YjJlNC4gXHVjNzc0IFx1YjNjNFx1Yjg1Y1x1Yjk3YyBcdWM5YzBcdWIwYTAgXHViNTRjLCBDKFx1YjMwMFx1YmIzOFx1Yzc5MClcdWM1ZDAgXHVkNTc0XHViMmY5XHVkNTU4XHViMjk0IFx1YzlkMFx1Yzc0NCBcdWMyZTRcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD4yXHViYzg4IFx1YjNjNFx1Yjg1YzogJnF1b3Q7eCB5IGMmcXVvdDsgeFx1YzVkMFx1YzExYyB5XHViODVjIFx1ZDVhNVx1ZDU1OFx1YjI5NCBcdWIzYzRcdWI4NWNcdWM3NzRcdWIyZTQuIFx1Yzc3NCBcdWIzYzRcdWI4NWNcdWI5N2MgXHVjOWMwXHViMGEwIFx1YjU0YywgYyhcdWMxOGNcdWJiMzhcdWM3OTApXHVjNWQwIFx1ZDU3NFx1YjJmOVx1ZDU1OFx1YjI5NCBcdWM5ZDBcdWM3NDQgXHViMGI0XHViODI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+M1x1YmM4OCBcdWIzYzRcdWI4NWM6ICZxdW90O3ggeSZxdW90OyB4XHVjNWQwXHVjMTFjIHlcdWI4NWMgXHVkNWE1XHVkNTU4XHViMjk0IFx1YjNjNFx1Yjg1Y1x1Yzc3NFx1YmE3MCwgXHVhZGY4IFx1YzViNDxcL3A+XHJcblxyXG48cD5cdWI0NTAgXHViM2M0XHVjMmRjXHViOTdjIFx1YzVmMFx1YWNiMFx1ZDU1OFx1YjI5NCBcdWIzYzRcdWI4NWNcdWM3NTggXHVjMjE4XHVhYzAwIFx1YjQ1MCBcdWFjMWMgXHVjNzc0XHVjMGMxXHVjNzc4IFx1YWNiZFx1YzZiMFx1YjI5NCBcdWM1YzZcdWIyZTQuIChcdWIyZTgsIFx1YmMyOVx1ZDVhNVx1Yzc3NCBcdWIyZTRcdWI5N2MgXHVjMjE4XHViMjk0IFx1Yzc4OFx1YjJlNCkgXHViNjEwLCB4XHVjNjQwIHlcdWFjMDAgXHVhYzE5XHVjNzQwIFx1YWNiZFx1YzZiMFx1YjNjNCBcdWM1YzZcdWIyZTQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+XHVjY2FiXHVjOWY4IFx1YzkwNFx1YzVkMCBcdWMwYzFcdWFkZmNcdWM3NzRcdWFjMDAgMVx1YmM4OCBcdWIzYzRcdWMyZGNcdWM1ZDBcdWMxMWMgXHVjZDljXHViYzFjXHVkNTc0XHVjMTFjIE5cdWJjODggXHViM2M0XHVjMmRjXHViODVjIFx1YjNjNFx1Y2MyOVx1ZDU1OFx1YjI5NCBcdWJjMjlcdWJjOTVcdWM3NTggXHVjMjE4XHViOTdjIFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC4gXHVjMjE4XHVhYzAwIFx1YjllNFx1YzZiMCBcdWNlZTRcdWM5YzggXHVjMjE4IFx1Yzc4OFx1YWUzMCBcdWI1NGNcdWJiMzhcdWM1ZDAgMTAwMDdcdWI4NWMgXHViMDk4XHViMjA4IFx1YjA5OFx1YmEzOFx1YzljMFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJwcm9ibGVtX2xhbmdfY29kZSI6Ilx1ZDU1Y1x1YWQ2ZFx1YzViNCJ9LHsicHJvYmxlbV9pZCI6IjI4MzciLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJLQU1JT04iLCJkZXNjcmlwdGlvbiI6IjxwPk1pcmtvIGlzIGEgdHJ1Y2sgZHJpdmVyLiBIaXMgam9iIGlzIHRvIHRyYXZlbCBiZXR3ZWVuIGNpdGllcyBieSByb2FkcywgbG9hZGluZyBhbmQgdW5sb2FkaW5nIHRoZSBjYXJnby4mbmJzcDs8XC9wPlxyXG5cclxuPHA+SGlzIHRydWNrIGlzIHNvIGJpZyB0aGF0IGl0IGNhbiBsb2FkIHVubGltaXRlZCBudW1iZXIgb2YgcGFja2FnZXMsIGJ1dCB0aGUgYXV0b21hdGVkIGxvYWRpbmcgc3lzdGVtIGVuYWJsZXMgb25seSB0aGUgbGFzdCBsb2FkZWQgcGFja2FnZSB0byBiZSB1bmxvYWRlZC4gVGhlcmUgZXhpc3RzIDI2IGRpZmZlcmVudCB0eXBlcyBvZiBwYWNrYWdlcywgZWFjaCBvZiB3aGljaCBpcyBkZW5vdGVkIGJ5IGEgbGV0dGVyIG9mIGVuZ2xpc2ggYWxwaGFiZXQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBjaXRpZXMgYXJlIGNvbm5lY3RlZCBieSBvbmUtd2F5IHJvYWRzIG9mIGxlbmd0aCAxIGtpbG9tZXRlci4gTW9yZSBwcmVjaXNlbHksIHRoZXJlIGV4aXN0cyAzIHR5cGVzIG9mIHJvYWRzLCBjb252ZW5pZW50bHkgZGVub3RlZCBieSAxLCAyIGFuZCAzOiZuYnNwOzxcL3A+XHJcblxyXG48b2w+XHJcblx0PGxpPmVhY2ggdGltZSBNaXJrbyBkcml2ZXMgZG93biB0aGUgcm9hZCBvZiB0aGlzIHR5cGUsIGhlIG11c3QgbG9hZCBleGFjdGx5IG9uZSBwYWNrYWdlIG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvciB0aGF0IHJvYWQmbmJzcDs8XC9saT5cclxuXHQ8bGk+ZWFjaCB0aW1lIE1pcmtvIGRyaXZlcyBkb3duIHRoZSByb2FkIG9mIHRoaXMgdHlwZSwgaGUgbXVzdCB1bmxvYWQgZXhhY3RseSBvbmUgcGFja2FnZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSBmb3IgdGhhdCByb2FkJm5ic3A7PFwvbGk+XHJcblx0PGxpPk1pcmtvIGNhbiBkcml2ZSBkb3duIHRoZSByb2FkIG9mIHRoaXMgdHlwZSB3aXRob3V0IGxvYWRpbmcgb3IgdW5sb2FkaW5nIHBhY2thZ2VzIChubyBsb2FkaW5nXC91bmxvYWRpbmcpJm5ic3A7PFwvbGk+XHJcbjxcL29sPlxyXG5cclxuPHA+TWlya28gaXMgcmVxdWlyZWQgbm90IHRvIGxvYWRcL3VubG9hZCBhbnkgY2FyZ28gZXhjZXB0IHdoZW4gZHJpdmluZyBkb3duIHRoZSByb2FkcyBvZiB0eXBlIDIgb3IgMywgYXMgc3RhdGVkIGFib3ZlLiZuYnNwOzxcL3A+XHJcblxyXG48cD5NaXJrbyBjYW4gdHJhdmVsIGFsb25nIEUgcm9hZHMgY29ubmVjdGluZyBOIGNpdGllcy4gSGlzIHN0YXJ0cyBpbiB0aGUgY2l0eSBkZW5vdGVkIGJ5IG51bWJlciAxIGFuZCBoaXMgZ29hbCBpcyB0byByZWFjaCBjaXR5IGRlbm90ZWQgYnkgbnVtYmVyIE4uIFdoZW4gYXJyaXZpbmcgaW4gdGhlIGNpdHkgbnVtYmVyZWQgTiwgTWlya28mIzM5O3MgdHJ1Y2sgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGVtcHR5LiZuYnNwOzxcL3A+XHJcblxyXG48cD5Xcml0ZSBhIHByb2dyYW0gd2hpY2ggY29tcHV0ZXMgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgd2F5cyB0aGF0IE1pcmtvIGNhbiB0cmF2ZWwgc28gdGhhdCBoZSB0cmF2ZXJzZXMgYXQgbW9zdCBLIGtpbG9tZXRlcnMuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBwb3NpdGl2ZSBpbnRlZ2VycyBOLCBFIGFuZCBLICgyICZsZTsgTiAmbGU7IDUwLCAxICZsZTsgRSAmbGU7IDI0NTAsIDEgJmxlOyBLICZsZTsgNTApLCB3aGljaCBkZW5vdGUgdGhlIG51bWJlciBvZiBjaXRpZXMsIHRoZSBudW1iZXIgb2Ygcm9hZHMgYW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZiBraWxvbWV0ZXJzIHRoYXQmbmJzcDs8XC9wPlxyXG5cclxuPHA+TWlya28gbWF5IHRyYXZlcnNlIGJlZm9yZSByZWFjaGluZyBoaXMgZGVzdGluYXRpb24uPFwvcD5cclxuXHJcbjxwPlRoZSBmb2xsb3dpbmcgRSBsaW5lcyBjb250YWluIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcm9hZHMgYWxvbmcgd2hpY2ggTWlya28gY2FuIHRyYXZlbC4gRWFjaCB0eXBlIG9mIHJvYWQgaGF2ZSBpdHMgb3duIGZvcm1hdDombmJzcDs8XC9wPlxyXG5cclxuPG9sPlxyXG5cdDxsaT4mcXVvdDt4IHkgQyZxdW90Oywgd2hlcmUgeCBhbmQgeSBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgd2hpY2ggZGVzY3JpYmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcm9hZCBhbmQgQyBpcyBhbiB1cHBlcmNhc2UgbGV0dGVyIG9mIGVuZ2xpc2ggYWxwaGFiZXQgd2hpY2ggZGVub3RlcyB0aGUgdHlwZSBvZiBwYWNrYWdlIHRoYXQgTWlya28gbXVzdCBsb2FkIG9udG8gdGhlIHRydWNrLiZuYnNwOzxcL2xpPlxyXG5cdDxsaT4mcXVvdDt4IHkgYyZxdW90Oywgd2hlcmUgeCBhbmQgeSBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgd2hpY2ggZGVzY3JpYmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcm9hZCBhbmQgQyBpcyBhbiBsb3dlcmNhc2UgbGV0dGVyIG9mIGVuZ2xpc2ggYWxwaGFiZXQgd2hpY2ggZGVub3RlcyB0aGUgdHlwZSBvZiBwYWNrYWdlIHRoYXQgTWlya28gbXVzdCB1bmxvYWQgZnJvbSB0aGUgdHJ1Y2suJm5ic3A7PFwvbGk+XHJcblx0PGxpPiZxdW90O3ggeSZxdW90Oywgd2hlcmUgeCBhbmQgeSBhcmUgcG9zaXRpdmUgaW50ZWdlcnMgd2hpY2ggZGVzY3JpYmUgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcm9hZCBJbiB0aGUgYWJvdmUgZm9ybWF0cywgdGhlIHJvYWQgYXJlIHRyYXZlcnNpYmxlIHdoZW4gdHJhdmVsaW5nIGZyb20gdGhlIGNpdHkgZGVub3RlZCBieSB4IHRvIHRoZSBjaXR5IGRlbm90ZWQgYnkgeS4gQWxzbywgaXQgd2lsbCBhbHdheXMgYmUgdHJ1ZSB0aGF0IDEgJmxlOyB4LCB5ICZsZTsgTiwgeCAmbmU7IHksIGFuZCBubyB0d28gcm9hZHMgd2lsbCBjb25uZWN0IHR3byBjaXRpZXMgaW4gdGhlIHNhbWUgZGlyZWN0aW9uLiZuYnNwOzxcL2xpPlxyXG48XC9vbD5cclxuIiwib3V0cHV0IjoiPHA+SW4gYSBzaW5nbGUgbGluZSBvZiBvdXRwdXQsIHByaW50IHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IHdheXMgTWlya28gY2FuIGFycml2ZSBpbiB0aGUgY2l0eSBudW1iZXJlZCBOLCBzdGFydGluZyBmcm9tIHRoZSBjaXR5IG51bWJlcmVkIDEsIHdoaWxlIHJlc3BlY3RpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHJlcXVpcmVtZW50cy4gU2luY2UgdGhpcyBudW1iZXIgY2FuIGJlIHF1aXRlIGJpZywgcHJpbnQgdGhlIHJlbWFpbmRlciBvZiB0aGF0IG51bWJlciB3aGVuIGRpdmlkZWQgYnkgMTAwMDcuJm5ic3A7PFwvcD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d