PrintVolution > Graphic Design

Graphic Design

We are able to produce any type of
graphic design to suit you.

Our world is one full of creative possibilities.  This means that no matter the complexity or size of your order, we will deal with it perfectly.  No matter what type of graphic design services you are seeking, we will deliver.

From our studio based in Singapore, we deliver a wide range of printing and graphic design services. Whether you need us to work with you on a domestic project such as wedding invitations or a full-on business marketing campaign, we have the drive, enthusiasm and artistic ability to bring it to fruition superbly.

Bespoke Graphic Design

Whatever type of design ideas you are looking for, our team will bring them to life, enjoying nothing more than working on stationery, business cards, product branding, brochures, folders or invites.  The list is endless and so is the potential of our ability.  The artwork that we product is unique to you. It will be memorable, original, eye-catching and brought to life by us to suit your requirements.

Our goal is to provide you with the perfect design features, layouts, colours and artistic qualities that will bring the things that you imagine to life.

Free Graphic Design Service

Our free graphic design service allows us to provide you with a consistent brand identity that follows you everywhere and brings customers with it.

Get in touch today to see if you qualify for our free graphic design service.

We love both print and design and want to tell the world about it!

Powerful print design is influential and commanding and it gets you noticed.   It enables customers to engage with you in the real world and creates a lasting impression.  Strong design coupled with the best choice of paper, finish, colour and typography tells the world about your business.

Our customers recognise our enthusiasm and the results that the power of great design brings about. When this shows through in your brochures, stationery, leaflets and catalogues you are not only distinguished from the competition but clients will remember you and what you have to offer. Good print design provides you with a potent way of engaging with your followers, maintaining relationships with current clients and building new ones.  Whilst your online presence is vitally important, you should not forget to augment this by the addition of great print.

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.
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlcicgaWQ9J2dmb3JtX3dyYXBwZXJfMjgnID48ZGl2IGlkPSdnZl8yOCcgY2xhc3M9J2dmb3JtX2FuY2hvcicgdGFiaW5kZXg9Jy0xJz48L2Rpdj48Zm9ybSBtZXRob2Q9J3Bvc3QnIGVuY3R5cGU9J211bHRpcGFydC9mb3JtLWRhdGEnIHRhcmdldD0nZ2Zvcm1fYWpheF9mcmFtZV8yOCcgaWQ9J2dmb3JtXzI4JyAgYWN0aW9uPScvZ3JhcGhpYy1kZXNpZ24vI2dmXzI4Jz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nZ2Zvcm1faGVhZGluZyc+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=