Home

Captivating prints are
now made easy!

We not only provide printing services of an extremely high standard but we are committed to serving you well.  No job with us is a ‘one off’.  With knowledge of printing that covers many years, no matter the size or complexity of the order you place with us, you can relax, knowing that we are always prepared to go the extra mile. 

Working in line with the highest of specifications and with reliable quality control processes in place, look no further for printing services in Singapore.   Place your order with us today and we promise you will not be disappointed.

How We Work

Print online with us in 4 simple steps:

Selection

Choose your format, paper and colours, identify the quantity and delivery requirements.

Payment

Payment can be made by cash, NETs, cheque, bank transfer, credit card, PayPal, PayNow

home02_1

Uploading

If your artwork file is ready, upload it.  If you don’t have artwork, get in touch with us.

Delivery

Delivery is free above $200 otherwise self-collection is required. 24hr service is available.

Printing Partner
Sample Pack Banner
Customer Focus

You are important to us and at the forefront of all that we do.

Integrity & Trust

Transparent services with honesty pervading our every action

Proactiveness

When there is a problem, we find a way to resolve it.

First Class Service

By getting it right first time, you are happy and so are we.

Contact Us
Feel free to leave as a note. A letter. A word. No matter. Lorem ipsum dolor isamet and so on. So keep in touch. Leave a message. You know what I'm saying.
2018 (C) All rights reserved.
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlcicgaWQ9J2dmb3JtX3dyYXBwZXJfMjgnID48ZGl2IGlkPSdnZl8yOCcgY2xhc3M9J2dmb3JtX2FuY2hvcicgdGFiaW5kZXg9Jy0xJz48L2Rpdj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIHRhcmdldD0nZ2Zvcm1fYWpheF9mcmFtZV8yOCcgaWQ9J2dmb3JtXzI4JyAgYWN0aW9uPScvI2dmXzI4Jz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1faGVhZGluZyc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9J2dmb3JtX3RpdGxlJz5DYXJkYm9hcmQgU3RhbmRlZSBFbnF1aXJ5PC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2dmb3JtX2JvZHknPjx1bCBpZD0nZ2Zvcm1fZmllbGRzXzI4JyBjbGFzcz0nZ2Zvcm1fZmllbGRzIHRvcF9sYWJlbCBmb3JtX3N1YmxhYmVsX2JlbG93IGRlc2NyaXB0aW9uX2JlbG93Jz48bGkgaWQ9J2ZpZWxkXzI4XzIwJyAgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzI4XzIwJyA+TmFtZTxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dCc+PGlucHV0IG5hbWU9J2lucHV0XzIwJyBpZD0naW5wdXRfMjhfMjAnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICAgICBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIiAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yOF8yJyAgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzI4XzInID5FbWFpbDxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfZW1haWwnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9J2lucHV0XzInIGlkPSdpbnB1dF8yOF8yJyB0eXBlPSd0ZXh0JyB2YWx1ZT0nJyBjbGFzcz0nbWVkaXVtJyAgICBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIiAvPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMjhfMycgIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yOF8zJyA+UGhvbmU8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3Bob25lJz48aW5wdXQgbmFtZT0naW5wdXRfMycgaWQ9J2lucHV0XzI4XzMnIHR5cGU9J3RleHQnIHZhbHVlPScnIGNsYXNzPSdtZWRpdW0nICAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSIgIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzI4XzQnICBjbGFzcz0nZ2ZpZWxkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yOF80JyA+Q29tcGFueTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3RleHQnPjxpbnB1dCBuYW1lPSdpbnB1dF80JyBpZD0naW5wdXRfMjhfNCcgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgICAgICBhcmlhLWludmFsaWQ9ImZhbHNlIiAvPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yOF8xNicgIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yOF8xNicgPkxhbWluYXRpb248c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3NlbGVjdCc+PHNlbGVjdCBuYW1lPSdpbnB1dF8xNicgaWQ9J2lucHV0XzI4XzE2JyBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnICAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSI+PG9wdGlvbiB2YWx1ZT0nTm8gTGFtaW5hdGlvbicgPk5vIExhbWluYXRpb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXR0IExhbWluYXRpb24nID5NYXR0IExhbWluYXRpb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdHbG9zcyBMYW1pbmF0aW9uJyA+R2xvc3MgTGFtaW5hdGlvbjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yOF8xNycgIGNsYXNzPSdnZmllbGQgZ2ZpZWxkX2NvbnRhaW5zX3JlcXVpcmVkIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yOF8xNycgPlNpemU8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3NlbGVjdCc+PHNlbGVjdCBuYW1lPSdpbnB1dF8xNycgaWQ9J2lucHV0XzI4XzE3JyBjbGFzcz0nbWVkaXVtIGdmaWVsZF9zZWxlY3QnICAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSI+PG9wdGlvbiB2YWx1ZT0nQTUnID5BNTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0E0JyA+QTQ8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBMycgPkEzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQTInID5BMjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0ExJyA+QTE8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBMCcgPkEwPC9vcHRpb24+PC9zZWxlY3Q+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzI4XzcnICBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlJyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjhfNycgPlF1YW50aXR5PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9udW1iZXInPjxpbnB1dCBuYW1lPSdpbnB1dF83JyBpZD0naW5wdXRfMjhfNycgdHlwZT0ndGV4dCcgICAgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgICAgIGFyaWEtcmVxdWlyZWQ9InRydWUiIGFyaWEtaW52YWxpZD0iZmFsc2UiIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzI4XzEwJyAgY2xhc3M9J2dmaWVsZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlJyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMjhfMTAnID5BZGRpdGlvbmFsIEluZm9ybWF0aW9uPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfdGV4dGFyZWEnPjx0ZXh0YXJlYSBuYW1lPSdpbnB1dF8xMCcgaWQ9J2lucHV0XzI4XzEwJyBjbGFzcz0ndGV4dGFyZWEgbWVkaXVtJyAgICAgIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgcm93cz0nMTAnIGNvbHM9JzUwJz48L3RleHRhcmVhPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yOF8xOCcgIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyAgPkFydHdvcmsgVXBsb2FkPC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfZmlsZXVwbG9hZCc+PGRpdiBpZD0nZ2Zvcm1fbXVsdGlmaWxlX3VwbG9hZF8yOF8xOCcgZGF0YS1zZXR0aW5ncz0neyZxdW90O3J1bnRpbWVzJnF1b3Q7OiZxdW90O2h0bWw1LGZsYXNoLGh0bWw0JnF1b3Q7LCZxdW90O2Jyb3dzZV9idXR0b24mcXVvdDs6JnF1b3Q7Z2Zvcm1fYnJvd3NlX2J1dHRvbl8yOF8xOCZxdW90OywmcXVvdDtjb250YWluZXImcXVvdDs6JnF1b3Q7Z2Zvcm1fbXVsdGlmaWxlX3VwbG9hZF8yOF8xOCZxdW90OywmcXVvdDtkcm9wX2VsZW1lbnQmcXVvdDs6JnF1b3Q7Z2Zvcm1fZHJhZ19kcm9wX2FyZWFfMjhfMTgmcXVvdDssJnF1b3Q7ZmlsZWxpc3QmcXVvdDs6JnF1b3Q7Z2Zvcm1fcHJldmlld18yOF8xOCZxdW90OywmcXVvdDt1bmlxdWVfbmFtZXMmcXVvdDs6dHJ1ZSwmcXVvdDtmaWxlX2RhdGFfbmFtZSZxdW90OzomcXVvdDtmaWxlJnF1b3Q7LCZxdW90O3VybCZxdW90OzomcXVvdDtodHRwczpcL1wvcHJpbnR2b2x1dGlvbi5zZ1wvP2dmX3BhZ2U9NWU3YWYwMWM1ZTEyNWU5JnF1b3Q7LCZxdW90O2ZsYXNoX3N3Zl91cmwmcXVvdDs6JnF1b3Q7aHR0cHM6XC9cL3ByaW50dm9sdXRpb24uc2dcL3dwLWluY2x1ZGVzXC9qc1wvcGx1cGxvYWRcL3BsdXBsb2FkLmZsYXNoLnN3ZiZxdW90OywmcXVvdDtzaWx2ZXJsaWdodF94YXBfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOlwvXC9wcmludHZvbHV0aW9uLnNnXC93cC1pbmNsdWRlc1wvanNcL3BsdXBsb2FkXC9wbHVwbG9hZC5zaWx2ZXJsaWdodC54YXAmcXVvdDssJnF1b3Q7ZmlsdGVycyZxdW90Ozp7JnF1b3Q7bWltZV90eXBlcyZxdW90OzpbeyZxdW90O3RpdGxlJnF1b3Q7OiZxdW90O0FsbG93ZWQgRmlsZXMmcXVvdDssJnF1b3Q7ZXh0ZW5zaW9ucyZxdW90OzomcXVvdDsqJnF1b3Q7fV0sJnF1b3Q7bWF4X2ZpbGVfc2l6ZSZxdW90OzomcXVvdDszMzU1NDQzMmImcXVvdDt9LCZxdW90O211bHRpcGFydCZxdW90Ozp0cnVlLCZxdW90O3VybHN0cmVhbV91cGxvYWQmcXVvdDs6ZmFsc2UsJnF1b3Q7bXVsdGlwYXJ0X3BhcmFtcyZxdW90Ozp7JnF1b3Q7Zm9ybV9pZCZxdW90OzoyOCwmcXVvdDtmaWVsZF9pZCZxdW90OzoxOH0sJnF1b3Q7Z2ZfdmFycyZxdW90Ozp7JnF1b3Q7bWF4X2ZpbGVzJnF1b3Q7OjAsJnF1b3Q7bWVzc2FnZV9pZCZxdW90OzomcXVvdDtnZm9ybV9tdWx0aWZpbGVfbWVzc2FnZXNfMjhfMTgmcXVvdDssJnF1b3Q7ZGlzYWxsb3dlZF9leHRlbnNpb25zJnF1b3Q7OlsmcXVvdDtwaHAmcXVvdDssJnF1b3Q7YXNwJnF1b3Q7LCZxdW90O2FzcHgmcXVvdDssJnF1b3Q7Y21kJnF1b3Q7LCZxdW90O2NzaCZxdW90OywmcXVvdDtiYXQmcXVvdDssJnF1b3Q7aHRtbCZxdW90OywmcXVvdDtodG0mcXVvdDssJnF1b3Q7aHRhJnF1b3Q7LCZxdW90O2phciZxdW90OywmcXVvdDtleGUmcXVvdDssJnF1b3Q7Y29tJnF1b3Q7LCZxdW90O2pzJnF1b3Q7LCZxdW90O2xuayZxdW90OywmcXVvdDtodGFjY2VzcyZxdW90OywmcXVvdDtwaHRtbCZxdW90OywmcXVvdDtwczEmcXVvdDssJnF1b3Q7cHMyJnF1b3Q7LCZxdW90O3BocDMmcXVvdDssJnF1b3Q7cGhwNCZxdW90OywmcXVvdDtwaHA1JnF1b3Q7LCZxdW90O3BocDYmcXVvdDssJnF1b3Q7cHkmcXVvdDssJnF1b3Q7cmImcXVvdDssJnF1b3Q7dG1wJnF1b3Q7XX19JyBjbGFzcz0nZ2Zvcm1fZmlsZXVwbG9hZF9tdWx0aWZpbGUnPgoJCQkJCQkJCQkJPGRpdiBpZD0nZ2Zvcm1fZHJhZ19kcm9wX2FyZWFfMjhfMTgnIGNsYXNzPSdnZm9ybV9kcm9wX2FyZWEnPgoJCQkJCQkJCQkJCTxzcGFuIGNsYXNzPSdnZm9ybV9kcm9wX2luc3RydWN0aW9ucyc+RHJvcCBmaWxlcyBoZXJlIG9yIDwvc3Bhbj4KCQkJCQkJCQkJCQk8aW5wdXQgaWQ9J2dmb3JtX2Jyb3dzZV9idXR0b25fMjhfMTgnIHR5cGU9J2J1dHRvbicgdmFsdWU9J1NlbGVjdCBmaWxlcycgY2xhc3M9J2J1dHRvbiBnZm9ybV9idXR0b25fc2VsZWN0X2ZpbGVzJyBhcmlhLWRlc2NyaWJlZGJ5PSdleHRlbnNpb25zX21lc3NhZ2VfMjhfMTgnICAvPgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PjxzcGFuIGlkPSdleHRlbnNpb25zX21lc3NhZ2VfMjhfMTgnIGNsYXNzPSdzY3JlZW4tcmVhZGVyLXRleHQnPjwvc3Bhbj48ZGl2IGNsYXNzPSd2YWxpZGF0aW9uX21lc3NhZ2UnPgoJCQkJCQkJCTx1bCBpZD0nZ2Zvcm1fbXVsdGlmaWxlX21lc3NhZ2VzXzI4XzE4Jz4KCQkJCQkJCQk8L3VsPgoJCQkJCQkJPC9kaXY+PC9kaXY+PGRpdiBpZD0nZ2Zvcm1fcHJldmlld18yOF8xOCc+PC9kaXY+PC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1fZm9vdGVyIHRvcF9sYWJlbCc+IDxpbnB1dCB0eXBlPSdzdWJtaXQnIGlkPSdnZm9ybV9zdWJtaXRfYnV0dG9uXzI4JyBjbGFzcz0nZ2Zvcm1fYnV0dG9uIGJ1dHRvbicgdmFsdWU9J1N1Ym1pdCcgIG9uY2xpY2s9J2lmKHdpbmRvd1siZ2Zfc3VibWl0dGluZ18yOCJdKXtyZXR1cm4gZmFsc2U7fSAgd2luZG93WyJnZl9zdWJtaXR0aW5nXzI4Il09dHJ1ZTsgICcgb25rZXlwcmVzcz0naWYoIGV2ZW50LmtleUNvZGUgPT0gMTMgKXsgaWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzI4Il0pe3JldHVybiBmYWxzZTt9IHdpbmRvd1siZ2Zfc3VibWl0dGluZ18yOCJdPXRydWU7ICBqUXVlcnkoIiNnZm9ybV8yOCIpLnRyaWdnZXIoInN1Ym1pdCIsW3RydWVdKTsgfScgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fYWpheCcgdmFsdWU9J2Zvcm1faWQ9MjgmYW1wO3RpdGxlPTEmYW1wO2Rlc2NyaXB0aW9uPSZhbXA7dGFiaW5kZXg9MCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0naXNfc3VibWl0XzI4JyB2YWx1ZT0nMScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc3VibWl0JyB2YWx1ZT0nMjgnIC8+CiAgICAgICAgICAgIAogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV91bmlxdWVfaWQnIHZhbHVlPScnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J3N0YXRlXzI4JyB2YWx1ZT0nV3lKYlhTSXNJak5sWldVd1pqWXhZbVUyT1Raa1ptVmxNREZrWW1WbFptWTROREF5WVRNMElsMD0nIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8yOCcgaWQ9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8yOCcgdmFsdWU9JzAnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8yOCcgaWQ9J2dmb3JtX3NvdXJjZV9wYWdlX251bWJlcl8yOCcgdmFsdWU9JzEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dmb3JtX2ZpZWxkX3ZhbHVlcycgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fdXBsb2FkZWRfZmlsZXMnIGlkPSdnZm9ybV91cGxvYWRlZF9maWxlc18yOCcgdmFsdWU9JycgLz4KICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpZnJhbWUgc3R5bGU9J2Rpc3BsYXk6bm9uZTt3aWR0aDowcHg7aGVpZ2h0OjBweDsnIHNyYz0nYWJvdXQ6YmxhbmsnIG5hbWU9J2dmb3JtX2FqYXhfZnJhbWVfMjgnIGlkPSdnZm9ybV9hamF4X2ZyYW1lXzI4Jz5UaGlzIGlmcmFtZSBjb250YWlucyB0aGUgbG9naWMgcmVxdWlyZWQgdG8gaGFuZGxlIEFqYXggcG93ZXJlZCBHcmF2aXR5IEZvcm1zLjwvaWZyYW1lPgogICAgICAgICAgICAgICAgPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCl7Z2Zvcm1Jbml0U3Bpbm5lciggMjgsICdodHRwczovL3ByaW50dm9sdXRpb24uc2cvd3AtY29udGVudC9wbHVnaW5zL2dyYXZpdHlmb3Jtcy9pbWFnZXMvc3Bpbm5lci5naWYnICk7alF1ZXJ5KCcjZ2Zvcm1fYWpheF9mcmFtZV8yOCcpLm9uKCdsb2FkJyxmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8yOCcpO3ZhciBpc19jb25maXJtYXRpb24gPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fY29uZmlybWF0aW9uX3dyYXBwZXJfMjgnKS5sZW5ndGggPiAwO3ZhciBpc19yZWRpcmVjdCA9IGNvbnRlbnRzLmluZGV4T2YoJ2dmb3JtUmVkaXJlY3QoKXsnKSA+PSAwO3ZhciBpc19mb3JtID0gZm9ybV9jb250ZW50Lmxlbmd0aCA+IDAgJiYgISBpc19yZWRpcmVjdCAmJiAhIGlzX2NvbmZpcm1hdGlvbjtpZihpc19mb3JtKXtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI4JykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtpZihmb3JtX2NvbnRlbnQuaGFzQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yOCcpLmFkZENsYXNzKCdnZm9ybV92YWxpZGF0aW9uX2Vycm9yJyk7fSBlbHNlIHtqUXVlcnkoJyNnZm9ybV93cmFwcGVyXzI4JykucmVtb3ZlQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9c2V0VGltZW91dCggZnVuY3Rpb24oKSB7IC8qIGRlbGF5IHRoZSBzY3JvbGwgYnkgNTAgbWlsbGlzZWNvbmRzIHRvIGZpeCBhIGJ1ZyBpbiBjaHJvbWUgKi8galF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yOCcpLm9mZnNldCgpLnRvcCk7IH0sIDUwICk7aWYod2luZG93WydnZm9ybUluaXREYXRlcGlja2VyJ10pIHtnZm9ybUluaXREYXRlcGlja2VyKCk7fWlmKHdpbmRvd1snZ2Zvcm1Jbml0UHJpY2VGaWVsZHMnXSkge2dmb3JtSW5pdFByaWNlRmllbGRzKCk7fXZhciBjdXJyZW50X3BhZ2UgPSBqUXVlcnkoJyNnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMjgnKS52YWwoKTtnZm9ybUluaXRTcGlubmVyKCAyOCwgJ2h0dHBzOi8vcHJpbnR2b2x1dGlvbi5zZy93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3BhZ2VfbG9hZGVkJywgWzI4LCBjdXJyZW50X3BhZ2VdKTt3aW5kb3dbJ2dmX3N1Ym1pdHRpbmdfMjgnXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnLkdGX0FKQVhfUE9TVEJBQ0snKS5odG1sKCk7aWYoIWNvbmZpcm1hdGlvbl9jb250ZW50KXtjb25maXJtYXRpb25fY29udGVudCA9IGNvbnRlbnRzO31zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yOCcpLnJlcGxhY2VXaXRoKGNvbmZpcm1hdGlvbl9jb250ZW50KTtqUXVlcnkoZG9jdW1lbnQpLnNjcm9sbFRvcChqUXVlcnkoJyNnZl8yOCcpLm9mZnNldCgpLnRvcCk7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9jb25maXJtYXRpb25fbG9hZGVkJywgWzI4XSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzI4J10gPSBmYWxzZTt9LCA1MCk7fWVsc2V7alF1ZXJ5KCcjZ2Zvcm1fMjgnKS5hcHBlbmQoY29udGVudHMpO2lmKHdpbmRvd1snZ2Zvcm1SZWRpcmVjdCddKSB7Z2Zvcm1SZWRpcmVjdCgpO319alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyOCwgY3VycmVudF9wYWdlXSk7fSApO30gKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+IGpRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9yZW5kZXInLCBmdW5jdGlvbihldmVudCwgZm9ybUlkLCBjdXJyZW50UGFnZSl7aWYoZm9ybUlkID09IDI4KSB7Z2Zvcm1Jbml0Q2hvc2VuRmllbGRzKCcjaW5wdXRfMjhfMTYsI2lucHV0XzI4XzE3JywnTm8gcmVzdWx0cyBtYXRjaGVkJyk7fSB9ICk7alF1ZXJ5KGRvY3VtZW50KS5iaW5kKCdnZm9ybV9wb3N0X2NvbmRpdGlvbmFsX2xvZ2ljJywgZnVuY3Rpb24oZXZlbnQsIGZvcm1JZCwgZmllbGRzLCBpc0luaXQpe2dmb3JtSW5pdENob3NlbkZpZWxkcygnI2lucHV0XzI4XzE2LCNpbnB1dF8yOF8xNycsJ05vIHJlc3VsdHMgbWF0Y2hlZCcpO30gKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+IGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtqUXVlcnkoZG9jdW1lbnQpLnRyaWdnZXIoJ2dmb3JtX3Bvc3RfcmVuZGVyJywgWzI4LCAxXSkgfSApOyA8L3NjcmlwdD4=