button flyout offcanvas contact3
button flyout offcanvas subscribe3

Contact Us

Don’t hesitate to let us know how we can help you. We are here to answer any questions you might have or assist you with a project.

CAPTCHA
Please wait...

Subscribe

Join our mailing list and stay up to date on the latest smart technology news and events.

* indicates required
Call for an appointment today 1-877-546-8540   |   4087 Harvester Road Unit 7 Burlington, Ontario L7L5M3   |   Login
          
Phand Corporation

Commercial Automation

One size does not fit all when it comes to the possibilities with technology! Depending on industry and your unique business needs, we create ways for you to have easy control of of it all, with access from one centralized or a combination of locations. Smart technology enables greater functionality and puts your company a step ahead in efficiency and quality of experience for your clientele. Start a system in one area or with one ability and expand in the future. With PHAND, we ensure multiple systems work perfectly together.

 

Boardroom / Conference Room     Restaurant / Bar     Professional Office     Medical / Dental     Hotels / Hospitality     Retail    

header space commercial boardroom

Boardroom / Conference Room

Don’t waste time in meetings trying to get your technology to work properly. More than just inefficient, it doesn’t make the right impression. PHAND makes it possible for technology to work properly – and work together – from lights to thermostats, TVs to projectors, audio systems to communication and much more! Achieve the efficiency, productivity and elegance of a boardroom integrated with the most up-to-date systems modern technology has to offer. Get the job done with sophistication using a single, easy-to-use touch device to control the room for multimedia presentations, tele-presence or video conferencing.

Related Products

  • Integrated Room Control
  • Audio / Video
  • Phone Systems
  • Video Conferencing
  • Networking
  • Lighting Control
  • Motorized Window Treatments

header space commercial restaurant

Restaurant/ Bar

Elevate the dining ambiance and create a memorable experience for your guests with smart technology for audio, video, lights, window treatments, HVAC, and security. From a centralized touch screen, easily deliver entertainment on TVs on different channels and music from multiple sources. Controlling AV in a sports bar or restaurant can be simple for every member of your team. Adjust house lights effortlessly with one press of a button for lunch or dinner, or have lights automatically adjust over time without lifting a finger as your space transitions from day to night. At closing time, it takes one press on a touch screen to power everything down, lock doors, and arm the security system.

Related Products

  • Smart Building Technology
  • Audio / Video
  • Lighting Control
  • Security
  • Surveillance
  • Networking
  • Motorized Window Treatments

 

header space commercial office

Professional Office

Increase productivity and create a competitive advantage that clients will notice! Smart technology with its integrated systems and centralized control facilitates your operations so that managers can focus on their other tasks more efficiently. Set a welcoming environment with one-touch control of lights, temperature, music and video. At opening or closing time, it takes just a single press to power everything on/off, disarm/arm security, raise/lower shades and set the temperature. And ensure security and peace of mind when you’re no longer there by receiving alerts or viewing cameras from your smart device.

Related Products

  • Smart Building Technology
  • Audio / Video
  • Lighting Control
  • Motorized Window Treatments
  • Surveillance
  • Networking
  • Motorized Window Treatments

header space commercial medical

Medical / Dental Office

Medical and dental offices that take advantage of the best of today’s technology can create a more efficient operation, a stress-free environment for staff and a greatly enhanced patient experience. Increase comfort and reduce energy costs with smart control of lighting, motorized shades and climate. Delight patients with simple control of entertainment during recovery and maintain a soothing atmosphere with music and video easily delivered to waiting areas and bathrooms. Stay in touch with nurses and patients via intercom/paging systems. Even create a state-of-the-art simulation lab, training environment or telemedicine system. And of course, receive security alerts and view cameras after hours from anywhere in the world.

Related Products

  • Integrated Building Control
  • Audio / Video
  • Lighting Control
  • Climate Control
  • Intercom / Paging
  • Surveillance
  • Motorized Window Treatments

header space commercial hotel

Hotel / Hospitality

Automation and integrated technology enhances the hotel guest experience and is simply smart business in hospitality. Set the ambience in common areas with easy control of lights, window treatments, music, video and HVAC. Staff can make one-button adjustments in rooms used for meetings, presentations, dancing, dinner and more. For a custom guest experience, adjust temperature, lighting and automated drapes for their arrival. Guests can play music from their smart phone, enjoy state-of-the-art TV embedded in their bathroom mirror and set a personalized wake up settings for drapes/TV/music. And then save energy with lighting and climate automatically turning off after check out or in unoccupied rooms.

Related Products

  • Smart Building Technology
  • Integrated Building Technology
  • Audio / Video
  • Lighting Control
  • Motorized Window Treatments
  • Energy Management
  • Motorized Window Treatments

header space commercial retail

Retail

Centrally monitor, manage and control architectural and interior lighting, thermostats, security, digital signage and distributed audio and video throughout the store. Intelligent and intuitive lighting control visually enhances displays and merchandising. Send content to video displays and digital signage with ease or adjust environmental and maintenance controls based on real-time monitoring. Access security cameras and get alerts if something isn’t right, whether in store or on the other side of the world. At opening or closing time it takes just one touch to power everything on/off, arm/disarm security and set the temperature.

Related Products

  • Integrated Building Control
  • Lighting Control
  • Security
  • Distributed Audio
  • Distributed Video
  • Surveillance
  • Motorized Window Treatments
CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZl9icm93c2VyX3Vua25vd24gZ2Zvcm1fd3JhcHBlcicgaWQ9J2dmb3JtX3dyYXBwZXJfMicgPjxhIGlkPSdnZl8yJyBjbGFzcz0nZ2Zvcm1fYW5jaG9yJyA+PC9hPjxmb3JtIG1ldGhvZD0ncG9zdCcgZW5jdHlwZT0nbXVsdGlwYXJ0L2Zvcm0tZGF0YScgdGFyZ2V0PSdnZm9ybV9hamF4X2ZyYW1lXzInIGlkPSdnZm9ybV8yJyAgYWN0aW9uPScvcHJvZHVjdHMvc3BhY2VzLWNvbW1lcmNpYWwvI2dmXzInPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9ib2R5Jz48dWwgaWQ9J2dmb3JtX2ZpZWxkc18yJyBjbGFzcz0nZ2Zvcm1fZmllbGRzIHRvcF9sYWJlbCBmb3JtX3N1YmxhYmVsX2JlbG93IGRlc2NyaXB0aW9uX2JlbG93Jz48bGkgaWQ9J2ZpZWxkXzJfMScgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsIGdmaWVsZF9sYWJlbF9iZWZvcmVfY29tcGxleCcgZm9yPSdpbnB1dF8yXzFfMycgPk5hbWU8c3BhbiBjbGFzcz0nZ2ZpZWxkX3JlcXVpcmVkJz4qPC9zcGFuPjwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbXBsZXggZ2lucHV0X2NvbnRhaW5lciBub19wcmVmaXggaGFzX2ZpcnN0X25hbWUgbm9fbWlkZGxlX25hbWUgaGFzX2xhc3RfbmFtZSBub19zdWZmaXggZ2ZfbmFtZV9oYXNfMiBnaW5wdXRfY29udGFpbmVyX25hbWUgZ2ZpZWxkX3RyaWdnZXJfY2hhbmdlJyBpZD0naW5wdXRfMl8xJz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9J2lucHV0XzJfMV8zX2NvbnRhaW5lcicgY2xhc3M9J25hbWVfZmlyc3QnID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdpbnB1dF8xLjMnIGlkPSdpbnB1dF8yXzFfMycgdmFsdWU9JycgYXJpYS1sYWJlbD0nRmlyc3QgbmFtZScgdGFiaW5kZXg9JzInICBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0naW5wdXRfMl8xXzMnID5GaXJzdDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gaWQ9J2lucHV0XzJfMV82X2NvbnRhaW5lcicgY2xhc3M9J25hbWVfbGFzdCcgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2lucHV0XzEuNicgaWQ9J2lucHV0XzJfMV82JyB2YWx1ZT0nJyBhcmlhLWxhYmVsPSdMYXN0IG5hbWUnIHRhYmluZGV4PSc0JyAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9J2lucHV0XzJfMV82JyA+TGFzdDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMl8yJyBjbGFzcz0nZ2ZpZWxkIGdmX2xlZnRfaGFsZiBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzJfMicgPkVtYWlsPHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9lbWFpbCc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT0naW5wdXRfMicgaWQ9J2lucHV0XzJfMicgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzYnICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzJfMycgY2xhc3M9J2dmaWVsZCBnZl9yaWdodF9oYWxmIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5X3Zpc2libGUnID48bGFiZWwgY2xhc3M9J2dmaWVsZF9sYWJlbCcgZm9yPSdpbnB1dF8yXzMnID5QaG9uZTwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3Bob25lJz48aW5wdXQgbmFtZT0naW5wdXRfMycgaWQ9J2lucHV0XzJfMycgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J21lZGl1bScgdGFiaW5kZXg9JzcnICAgIGFyaWEtaW52YWxpZD0iZmFsc2UiIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzJfNCcgY2xhc3M9J2dmaWVsZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlJyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMl80JyA+Q29tcGFueSBOYW1lIChPcHRpb25hbCk8L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl90ZXh0Jz48aW5wdXQgbmFtZT0naW5wdXRfNCcgaWQ9J2lucHV0XzJfNCcgdHlwZT0ndGV4dCcgdmFsdWU9JycgY2xhc3M9J2xhcmdlJyAgdGFiaW5kZXg9JzgnICAgIGFyaWEtaW52YWxpZD0iZmFsc2UiIC8+PC9kaXY+PC9saT48bGkgaWQ9J2ZpZWxkXzJfNScgY2xhc3M9J2dmaWVsZCBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzJfNScgPldoYXQgdHlwZSBvZiBzcGFjZSBhcmUgeW91IG1vc3QgaW50ZXJlc3RlZCBpbiBsZWFybmluZyBhYm91dCBzb2x1dGlvbnMgZm9yPzxzcGFuIGNsYXNzPSdnZmllbGRfcmVxdWlyZWQnPio8L3NwYW4+PC9sYWJlbD48ZGl2IGNsYXNzPSdnaW5wdXRfY29udGFpbmVyIGdpbnB1dF9jb250YWluZXJfc2VsZWN0Jz48c2VsZWN0IG5hbWU9J2lucHV0XzUnIGlkPSdpbnB1dF8yXzUnICBjbGFzcz0nbGFyZ2UgZ2ZpZWxkX3NlbGVjdCcgdGFiaW5kZXg9JzknICBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIj48b3B0aW9uIHZhbHVlPScnIHNlbGVjdGVkPSdzZWxlY3RlZCcgY2xhc3M9J2dmX3BsYWNlaG9sZGVyJz5TZWxlY3QgdGhlIG9wdGlvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0hvbWUnID5Ib21lPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQ29tbWVyY2lhbCcgPkNvbW1lcmNpYWw8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNYXJpbmUnID5NYXJpbmU8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdMdXh1cnkgVHJhbnNwb3J0YXRpb24nID5MdXh1cnkgVHJhbnNwb3J0YXRpb248L29wdGlvbj48L3NlbGVjdD48L2Rpdj48L2xpPjxsaSBpZD0nZmllbGRfMl82JyBjbGFzcz0nZ2ZpZWxkIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlJyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMl82JyA+V2hhdCBiZXN0IGRlc2NyaWJlcyB5b3U/PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3QnPjxzZWxlY3QgbmFtZT0naW5wdXRfNicgaWQ9J2lucHV0XzJfNicgIGNsYXNzPSdsYXJnZSBnZmllbGRfc2VsZWN0JyB0YWJpbmRleD0nMTAnICBhcmlhLXJlcXVpcmVkPSJ0cnVlIiBhcmlhLWludmFsaWQ9ImZhbHNlIj48b3B0aW9uIHZhbHVlPScnIHNlbGVjdGVkPSdzZWxlY3RlZCcgY2xhc3M9J2dmX3BsYWNlaG9sZGVyJz5TZWxlY3QgdGhlIG9wdGlvbjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J093bmVyJyA+T3duZXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdBcmNoaXRlY3QnID5BcmNoaXRlY3Q8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdCdWlsZGVyIC8gQ29udHJhY3RvcicgPkJ1aWxkZXIgLyBDb250cmFjdG9yPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSW50ZXJpb3IgRGVzaWduZXInID5JbnRlcmlvciBEZXNpZ25lcjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J0xpZ2h0aW5nIERlc2lnbmVyJyA+TGlnaHRpbmcgRGVzaWduZXI8L29wdGlvbj48b3B0aW9uIHZhbHVlPSdQcmVzcyAvIE1lZGlhJyA+UHJlc3MgLyBNZWRpYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J1N0dWRlbnQnID5TdHVkZW50PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nT3RoZXInID5PdGhlcjwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yXzcnIGNsYXNzPSdnZmllbGQgZ2ZfbGVmdF9oYWxmIGdmaWVsZF9jb250YWluc19yZXF1aXJlZCBmaWVsZF9zdWJsYWJlbF9iZWxvdyBmaWVsZF9kZXNjcmlwdGlvbl9iZWxvdyBnZmllbGRfdmlzaWJpbGl0eV92aXNpYmxlJyA+PGxhYmVsIGNsYXNzPSdnZmllbGRfbGFiZWwnIGZvcj0naW5wdXRfMl83JyA+V2hhdCBiZXN0IGRlc2NyaWJlcyB5b3VyIHJlYXNvbiBmb3IgdmlzaXRpbmc/PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3QnPjxzZWxlY3QgbmFtZT0naW5wdXRfNycgaWQ9J2lucHV0XzJfNycgIGNsYXNzPSdtZWRpdW0gZ2ZpZWxkX3NlbGVjdCcgdGFiaW5kZXg9JzExJyAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSI+PG9wdGlvbiB2YWx1ZT0nJyBzZWxlY3RlZD0nc2VsZWN0ZWQnIGNsYXNzPSdnZl9wbGFjZWhvbGRlcic+U2VsZWN0IHRoZSBvcHRpb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdJJiMwMzk7bSBpbiB0aGUgZGVzaWduIHBoYXNlIG9mIGEgcHJvamVjdCcgPkkmIzAzOTttIGluIHRoZSBkZXNpZ24gcGhhc2Ugb2YgYSBwcm9qZWN0PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSSBoYXZlIHByb2plY3QgdW5kZXIgY29uc3RydWN0aW9uJyA+SSBoYXZlIHByb2plY3QgdW5kZXIgY29uc3RydWN0aW9uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSSYjMDM5O20gaW50ZXJlc3RlZCBpbiByZXRyb2ZpdCBzb2x1dGlvbnMgZm9yIGFuIGV4aXN0aW5nIHNwYWNlJyA+SSYjMDM5O20gaW50ZXJlc3RlZCBpbiByZXRyb2ZpdCBzb2x1dGlvbnMgZm9yIGFuIGV4aXN0aW5nIHNwYWNlPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSSYjMDM5O2QgbGlrZSB0byBsZWFybiBtb3JlIG5vdyBhbmQgbWF5IGhhdmUgYSBwcm9qZWN0IGluIHRoZSBmdXR1cmUnID5JJiMwMzk7ZCBsaWtlIHRvIGxlYXJuIG1vcmUgbm93IGFuZCBtYXkgaGF2ZSBhIHByb2plY3QgaW4gdGhlIGZ1dHVyZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yXzgnIGNsYXNzPSdnZmllbGQgZ2ZfcmlnaHRfaGFsZiBnZmllbGRfY29udGFpbnNfcmVxdWlyZWQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzJfOCcgPldoYXQgdGltZSBvZiBkYXkgd291bGQgeW91IGxpa2UgdG8gdmlzaXQ/PHNwYW4gY2xhc3M9J2dmaWVsZF9yZXF1aXJlZCc+Kjwvc3Bhbj48L2xhYmVsPjxkaXYgY2xhc3M9J2dpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9zZWxlY3QnPjxzZWxlY3QgbmFtZT0naW5wdXRfOCcgaWQ9J2lucHV0XzJfOCcgIGNsYXNzPSdtZWRpdW0gZ2ZpZWxkX3NlbGVjdCcgdGFiaW5kZXg9JzEyJyAgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgYXJpYS1pbnZhbGlkPSJmYWxzZSI+PG9wdGlvbiB2YWx1ZT0nJyBzZWxlY3RlZD0nc2VsZWN0ZWQnIGNsYXNzPSdnZl9wbGFjZWhvbGRlcic+U2VsZWN0IHRoZSBvcHRpb248L29wdGlvbj48b3B0aW9uIHZhbHVlPSdNb3JuaW5nJyA+TW9ybmluZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J01pZC1kYXknID5NaWQtZGF5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nQWZ0ZXJub29uJyA+QWZ0ZXJub29uPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nSSYjMDM5O20gZmxleGlibGUnID5JJiMwMzk7bSBmbGV4aWJsZTwvb3B0aW9uPjwvc2VsZWN0PjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yXzknIGNsYXNzPSdnZmllbGQgZmllbGRfc3VibGFiZWxfYmVsb3cgZmllbGRfZGVzY3JpcHRpb25fYmVsb3cgZ2ZpZWxkX3Zpc2liaWxpdHlfdmlzaWJsZScgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzJfOScgPldoYXQgd291bGQgeW91IGxpa2UgdG8gc2VlIGR1cmluZyB5b3VyIHZpc2l0PzwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lciBnaW5wdXRfY29udGFpbmVyX3RleHRhcmVhJz48dGV4dGFyZWEgbmFtZT0naW5wdXRfOScgaWQ9J2lucHV0XzJfOScgY2xhc3M9J3RleHRhcmVhIGxhcmdlJyB0YWJpbmRleD0nMTMnICAgIGFyaWEtaW52YWxpZD0iZmFsc2UiICAgcm93cz0nMTAnIGNvbHM9JzUwJz48L3RleHRhcmVhPjwvZGl2PjwvbGk+PGxpIGlkPSdmaWVsZF8yXzEwJyBjbGFzcz0nZ2ZpZWxkIGdmb3JtX3ZhbGlkYXRpb25fY29udGFpbmVyIGZpZWxkX3N1YmxhYmVsX2JlbG93IGZpZWxkX2Rlc2NyaXB0aW9uX2JlbG93IGdmaWVsZF92aXNpYmlsaXR5XycgPjxsYWJlbCBjbGFzcz0nZ2ZpZWxkX2xhYmVsJyBmb3I9J2lucHV0XzJfMTAnID5FbWFpbDwvbGFiZWw+PGRpdiBjbGFzcz0nZ2lucHV0X2NvbnRhaW5lcic+PGlucHV0IG5hbWU9J2lucHV0XzEwJyBpZD0naW5wdXRfMl8xMCcgdHlwZT0ndGV4dCcgdmFsdWU9JycgLz48L2Rpdj48ZGl2IGNsYXNzPSdnZmllbGRfZGVzY3JpcHRpb24nPlRoaXMgZmllbGQgaXMgZm9yIHZhbGlkYXRpb24gcHVycG9zZXMgYW5kIHNob3VsZCBiZSBsZWZ0IHVuY2hhbmdlZC48L2Rpdj48L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD48L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSdnZm9ybV9mb290ZXIgdG9wX2xhYmVsJz4gPGlucHV0IHR5cGU9J3N1Ym1pdCcgaWQ9J2dmb3JtX3N1Ym1pdF9idXR0b25fMicgY2xhc3M9J2dmb3JtX2J1dHRvbiBidXR0b24nIHZhbHVlPSdTdWJtaXQnIHRhYmluZGV4PScxNCcgb25jbGljaz0naWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzIiXSl7cmV0dXJuIGZhbHNlO30gIHdpbmRvd1siZ2Zfc3VibWl0dGluZ18yIl09dHJ1ZTsgICcgb25rZXlwcmVzcz0naWYoIGV2ZW50LmtleUNvZGUgPT0gMTMgKXsgaWYod2luZG93WyJnZl9zdWJtaXR0aW5nXzIiXSl7cmV0dXJuIGZhbHNlO30gd2luZG93WyJnZl9zdWJtaXR0aW5nXzIiXT10cnVlOyAgalF1ZXJ5KCIjZ2Zvcm1fMiIpLnRyaWdnZXIoInN1Ym1pdCIsW3RydWVdKTsgfScgLz4gPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nZ2Zvcm1fYWpheCcgdmFsdWU9J2Zvcm1faWQ9MiZhbXA7dGl0bGU9JmFtcDtkZXNjcmlwdGlvbj0mYW1wO3RhYmluZGV4PTEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2lzX3N1Ym1pdF8yJyB2YWx1ZT0nMScgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc3VibWl0JyB2YWx1ZT0nMicgLz4KICAgICAgICAgICAgCiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIGNsYXNzPSdnZm9ybV9oaWRkZW4nIG5hbWU9J2dmb3JtX3VuaXF1ZV9pZCcgdmFsdWU9JycgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nc3RhdGVfMicgdmFsdWU9J1d5SmJYU0lzSWprMFptWTBOek5rT0RrNE9UZzRZelV6TmpGa05XWmpObVEzWVRFellUZ3pJbDA9JyAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBjbGFzcz0nZ2Zvcm1faGlkZGVuJyBuYW1lPSdnZm9ybV90YXJnZXRfcGFnZV9udW1iZXJfMicgaWQ9J2dmb3JtX3RhcmdldF9wYWdlX251bWJlcl8yJyB2YWx1ZT0nMCcgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgY2xhc3M9J2dmb3JtX2hpZGRlbicgbmFtZT0nZ2Zvcm1fc291cmNlX3BhZ2VfbnVtYmVyXzInIGlkPSdnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMicgdmFsdWU9JzEnIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2dmb3JtX2ZpZWxkX3ZhbHVlcycgdmFsdWU9JycgLz4KICAgICAgICAgICAgCiAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8aWZyYW1lIHN0eWxlPSdkaXNwbGF5Om5vbmU7d2lkdGg6MHB4O2hlaWdodDowcHg7JyBzcmM9J2Fib3V0OmJsYW5rJyBuYW1lPSdnZm9ybV9hamF4X2ZyYW1lXzInIGlkPSdnZm9ybV9hamF4X2ZyYW1lXzInPlRoaXMgaWZyYW1lIGNvbnRhaW5zIHRoZSBsb2dpYyByZXF1aXJlZCB0byBoYW5kbGUgQUpBWCBwb3dlcmVkIEdyYXZpdHkgRm9ybXMuPC9pZnJhbWU+CiAgICAgICAgICAgICAgICA8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKXtnZm9ybUluaXRTcGlubmVyKCAyLCAnaHR0cDovL3d3dy5waGFuZC5jYS93cC1jb250ZW50L3BsdWdpbnMvZ3Jhdml0eWZvcm1zL2ltYWdlcy9zcGlubmVyLmdpZicgKTtqUXVlcnkoJyNnZm9ybV9hamF4X2ZyYW1lXzInKS5sb2FkKCBmdW5jdGlvbigpe3ZhciBjb250ZW50cyA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyonKS5odG1sKCk7dmFyIGlzX3Bvc3RiYWNrID0gY29udGVudHMuaW5kZXhPZignR0ZfQUpBWF9QT1NUQkFDSycpID49IDA7aWYoIWlzX3Bvc3RiYWNrKXtyZXR1cm47fXZhciBmb3JtX2NvbnRlbnQgPSBqUXVlcnkodGhpcykuY29udGVudHMoKS5maW5kKCcjZ2Zvcm1fd3JhcHBlcl8yJyk7dmFyIGlzX2NvbmZpcm1hdGlvbiA9IGpRdWVyeSh0aGlzKS5jb250ZW50cygpLmZpbmQoJyNnZm9ybV9jb25maXJtYXRpb25fd3JhcHBlcl8yJykubGVuZ3RoID4gMDt2YXIgaXNfcmVkaXJlY3QgPSBjb250ZW50cy5pbmRleE9mKCdnZm9ybVJlZGlyZWN0KCl7JykgPj0gMDt2YXIgaXNfZm9ybSA9IGZvcm1fY29udGVudC5sZW5ndGggPiAwICYmICEgaXNfcmVkaXJlY3QgJiYgISBpc19jb25maXJtYXRpb247aWYoaXNfZm9ybSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yJykuaHRtbChmb3JtX2NvbnRlbnQuaHRtbCgpKTtpZihmb3JtX2NvbnRlbnQuaGFzQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKSl7alF1ZXJ5KCcjZ2Zvcm1fd3JhcHBlcl8yJykuYWRkQ2xhc3MoJ2dmb3JtX3ZhbGlkYXRpb25fZXJyb3InKTt9IGVsc2Uge2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMicpLnJlbW92ZUNsYXNzKCdnZm9ybV92YWxpZGF0aW9uX2Vycm9yJyk7fXNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgeyAvKiBkZWxheSB0aGUgc2Nyb2xsIGJ5IDUwIG1pbGxpc2Vjb25kcyB0byBmaXggYSBidWcgaW4gY2hyb21lICovIGpRdWVyeShkb2N1bWVudCkuc2Nyb2xsVG9wKGpRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMicpLm9mZnNldCgpLnRvcCk7IH0sIDUwICk7aWYod2luZG93WydnZm9ybUluaXREYXRlcGlja2VyJ10pIHtnZm9ybUluaXREYXRlcGlja2VyKCk7fWlmKHdpbmRvd1snZ2Zvcm1Jbml0UHJpY2VGaWVsZHMnXSkge2dmb3JtSW5pdFByaWNlRmllbGRzKCk7fXZhciBjdXJyZW50X3BhZ2UgPSBqUXVlcnkoJyNnZm9ybV9zb3VyY2VfcGFnZV9udW1iZXJfMicpLnZhbCgpO2dmb3JtSW5pdFNwaW5uZXIoIDIsICdodHRwOi8vd3d3LnBoYW5kLmNhL3dwLWNvbnRlbnQvcGx1Z2lucy9ncmF2aXR5Zm9ybXMvaW1hZ2VzL3NwaW5uZXIuZ2lmJyApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcGFnZV9sb2FkZWQnLCBbMiwgY3VycmVudF9wYWdlXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzInXSA9IGZhbHNlO31lbHNlIGlmKCFpc19yZWRpcmVjdCl7dmFyIGNvbmZpcm1hdGlvbl9jb250ZW50ID0galF1ZXJ5KHRoaXMpLmNvbnRlbnRzKCkuZmluZCgnI2dmb3Jtc19jb25maXJtYXRpb25fbWVzc2FnZV8yJykuaHRtbCgpO2lmKCFjb25maXJtYXRpb25fY29udGVudCl7Y29uZmlybWF0aW9uX2NvbnRlbnQgPSBjb250ZW50czt9c2V0VGltZW91dChmdW5jdGlvbigpe2pRdWVyeSgnI2dmb3JtX3dyYXBwZXJfMicpLnJlcGxhY2VXaXRoKCc8JyArICdkaXYgaWQ9XCdnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VfMlwnIGNsYXNzPVwnZ2Zvcm1fY29uZmlybWF0aW9uX21lc3NhZ2VfMiBnZm9ybXNfY29uZmlybWF0aW9uX21lc3NhZ2VcJycgKyAnPicgKyBjb25maXJtYXRpb25fY29udGVudCArICc8JyArICcvZGl2JyArICc+Jyk7alF1ZXJ5KGRvY3VtZW50KS5zY3JvbGxUb3AoalF1ZXJ5KCcjZ2Zvcm1zX2NvbmZpcm1hdGlvbl9tZXNzYWdlXzInKS5vZmZzZXQoKS50b3ApO2pRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fY29uZmlybWF0aW9uX2xvYWRlZCcsIFsyXSk7d2luZG93WydnZl9zdWJtaXR0aW5nXzInXSA9IGZhbHNlO30sIDUwKTt9ZWxzZXtqUXVlcnkoJyNnZm9ybV8yJykuYXBwZW5kKGNvbnRlbnRzKTtpZih3aW5kb3dbJ2dmb3JtUmVkaXJlY3QnXSkge2dmb3JtUmVkaXJlY3QoKTt9fWpRdWVyeShkb2N1bWVudCkudHJpZ2dlcignZ2Zvcm1fcG9zdF9yZW5kZXInLCBbMiwgY3VycmVudF9wYWdlXSk7fSApO30gKTs8L3NjcmlwdD48c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+IGlmKHR5cGVvZiBnZl9nbG9iYWwgPT0gJ3VuZGVmaW5lZCcpIHZhciBnZl9nbG9iYWwgPSB7ImdmX2N1cnJlbmN5X2NvbmZpZyI6eyJuYW1lIjoiQ2FuYWRpYW4gRG9sbGFyIiwic3ltYm9sX2xlZnQiOiIkIiwic3ltYm9sX3JpZ2h0IjoiQ0FEIiwic3ltYm9sX3BhZGRpbmciOiIgIiwidGhvdXNhbmRfc2VwYXJhdG9yIjoiLCIsImRlY2ltYWxfc2VwYXJhdG9yIjoiLiIsImRlY2ltYWxzIjoyfSwiYmFzZV91cmwiOiJodHRwOlwvXC93d3cucGhhbmQuY2FcL3dwLWNvbnRlbnRcL3BsdWdpbnNcL2dyYXZpdHlmb3JtcyIsIm51bWJlcl9mb3JtYXRzIjpbXSwic3Bpbm5lclVybCI6Imh0dHA6XC9cL3d3dy5waGFuZC5jYVwvd3AtY29udGVudFwvcGx1Z2luc1wvZ3Jhdml0eWZvcm1zXC9pbWFnZXNcL3NwaW5uZXIuZ2lmIn07alF1ZXJ5KGRvY3VtZW50KS5iaW5kKCdnZm9ybV9wb3N0X3JlbmRlcicsIGZ1bmN0aW9uKGV2ZW50LCBmb3JtSWQsIGN1cnJlbnRQYWdlKXtpZihmb3JtSWQgPT0gMikge2lmKHR5cGVvZiBQbGFjZWhvbGRlcnMgIT0gJ3VuZGVmaW5lZCcpewogICAgICAgICAgICAgICAgICAgICAgICBQbGFjZWhvbGRlcnMuZW5hYmxlKCk7CiAgICAgICAgICAgICAgICAgICAgfWlmKCEvKGFuZHJvaWQpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSl7alF1ZXJ5KCcjaW5wdXRfMl8zJykubWFzaygnKDk5OSkgOTk5LTk5OTknKS5iaW5kKCdrZXlwcmVzcycsIGZ1bmN0aW9uKGUpe2lmKGUud2hpY2ggPT0gMTMpe2pRdWVyeSh0aGlzKS5ibHVyKCk7fSB9ICk7fX0gfSApO2pRdWVyeShkb2N1bWVudCkuYmluZCgnZ2Zvcm1fcG9zdF9jb25kaXRpb25hbF9sb2dpYycsIGZ1bmN0aW9uKGV2ZW50LCBmb3JtSWQsIGZpZWxkcywgaXNJbml0KXt9ICk7PC9zY3JpcHQ+PHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7alF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdnZm9ybV9wb3N0X3JlbmRlcicsIFsyLCAxXSkgfSApOyA8L3NjcmlwdD4=