<!DOCTYPE html><html lang="en-US"><head ><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> <script data-no-optimize="1" data-cfasync="false" data-type="lazy" data-src="data:text/javascript;base64,IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IHQ9e2FkdF9laTp7aWRlbnRpdHlBcGlLZXk6InBsYWluVGV4dCIsc291cmNlOiJ1cmwiLHR5cGU6InBsYWludGV4dCIscHJpb3JpdHk6MX0sYWR0X2VpaDp7aWRlbnRpdHlBcGlLZXk6InNoYTI1NiIsc291cmNlOiJ1cmxoIix0eXBlOiJoYXNoZWQiLHByaW9yaXR5OjJ9LHNoX2tpdDp7aWRlbnRpdHlBcGlLZXk6InNoYTI1NiIsc291cmNlOiJ1cmxoY2siLHR5cGU6Imhhc2hlZCIscHJpb3JpdHk6M319LGU9T2JqZWN0LmtleXModCk7ZnVuY3Rpb24gaSh0KXtyZXR1cm4gZnVuY3Rpb24odCl7Y29uc3QgZT10Lm1hdGNoKC8oKD89KFthLXowLTkuXyEjJCUrXiYqKClbXF08Pi1dKykpXDJAW2EtejAtOS5fLV0rXC5bYS16MC05Ll8tXSspL2dpKTtyZXR1cm4gZT9lWzBdOiIifShmdW5jdGlvbih0KXtyZXR1cm4gdC5yZXBsYWNlKC9ccy9nLCIiKX0odC50b0xvd2VyQ2FzZSgpKSl9IWFzeW5jIGZ1bmN0aW9uKCl7Y29uc3Qgbj1uZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSxvPW4uc2VhcmNoUGFyYW1zO2xldCBhPW51bGw7Y29uc3Qgcj1PYmplY3QuZW50cmllcyh0KS5zb3J0KChbLHRdLFssZV0pPT50LnByaW9yaXR5LWUucHJpb3JpdHkpLm1hcCgoW3RdKT0+dCk7Zm9yKGNvbnN0IGUgb2Ygcil7Y29uc3Qgbj1vLmdldChlKSxyPXRbZV07aWYoIW58fCFyKWNvbnRpbnVlO2NvbnN0IGM9ZGVjb2RlVVJJQ29tcG9uZW50KG4pLGQ9InBsYWludGV4dCI9PT1yLnR5cGUmJmkoYykscz0iaGFzaGVkIj09PXIudHlwZSYmYztpZihkfHxzKXthPXt2YWx1ZTpjLGNvbmZpZzpyfTticmVha319aWYoYSl7Y29uc3R7dmFsdWU6dCxjb25maWc6ZX09YTt3aW5kb3cuYWR0aHJpdmU9d2luZG93LmFkdGhyaXZlfHx7fSx3aW5kb3cuYWR0aHJpdmUuY21kPXdpbmRvdy5hZHRocml2ZS5jbWR8fFtdLHdpbmRvdy5hZHRocml2ZS5jbWQucHVzaChmdW5jdGlvbigpe3dpbmRvdy5hZHRocml2ZS5pZGVudGl0eUFwaSh7c291cmNlOmUuc291cmNlLFtlLmlkZW50aXR5QXBpS2V5XTp0fSwoe3N1Y2Nlc3M6aSxkYXRhOm59KT0+e2k/d2luZG93LmFkdGhyaXZlLmxvZygiaW5mbyIsIlBsdWdpbiIsImRldGVjdEVtYWlscyIsYElkZW50aXR5IEFQSSBjYWxsZWQgd2l0aCAke2UudHlwZX0gZW1haWw6ICR7dH1gLG4pOndpbmRvdy5hZHRocml2ZS5sb2coIndhcm5pbmciLCJQbHVnaW4iLCJkZXRlY3RFbWFpbHMiLGBGYWlsZWQgdG8gY2FsbCBJZGVudGl0eSBBUEkgd2l0aCAke2UudHlwZX0gZW1haWw6ICR7dH1gLG4pfSl9KX0hZnVuY3Rpb24odCxlKXtjb25zdCBpPW5ldyBVUkwoZSk7dC5mb3JFYWNoKHQ9Pmkuc2VhcmNoUGFyYW1zLmRlbGV0ZSh0KSksaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwiIixpLnRvU3RyaW5nKCkpfShlLG4pfSgpfSgpOw=="></script><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /><style data-no-optimize="1" data-cfasync="false">.adthrive-ad {
		margin-top: 10px;
		margin-bottom: 10px;
		text-align: center;
		overflow-x: visible;
		clear: both;
		line-height: 0;
	}
	body.adthrive-device-desktop .sidebar-primary {
min-height: auto !important;
float: right !important;
}</style> <script data-no-optimize="1" data-cfasync="false" data-type="lazy" data-src="data:text/javascript;base64,d2luZG93LmFkdGhyaXZlQ0xTID0gewoJCWVuYWJsZWRMb2NhdGlvbnM6IFsnQ29udGVudCcsICdSZWNpcGUnXSwKCQlpbmplY3RlZFNsb3RzOiBbXSwKCQlpbmplY3RlZEZyb21QbHVnaW46IHRydWUsCgkJYnJhbmNoOiAnYjY3NmMxNicsYnVja2V0OiAncHJvZCcsCQkJfTsKCXdpbmRvdy5hZHRocml2ZUNMUy5zaXRlQWRzID0geyJiZXRhVGVzdGVyIjpmYWxzZSwidGFyZ2V0aW5nIjpbeyJ2YWx1ZSI6IjY5MTRmYjVhMjAwZDdiMjIyMDlkZTUwYSIsImtleSI6InNpdGVJZCJ9LHsidmFsdWUiOiI2OTE0ZmI1YTU3ZjlkNDIyMjBhZmRhYjAiLCJrZXkiOiJvcmdhbml6YXRpb25JZCJ9LHsidmFsdWUiOiJTYXZpbmdBZHZpY2UiLCJrZXkiOiJzaXRlTmFtZSJ9LHsidmFsdWUiOiJBZFRocml2ZSBFZGdlIiwia2V5Ijoic2VydmljZSJ9LHsidmFsdWUiOiJvbiIsImtleSI6ImJpZGRpbmcifSx7InZhbHVlIjpbIlBlcnNvbmFsIEZpbmFuY2UiXSwia2V5IjoidmVydGljYWxzIn1dLCJzaXRlVXJsIjoiaHR0cHM6Ly93d3cuc2F2aW5nYWR2aWNlLmNvbSIsInNpdGVJZCI6IjY5MTRmYjVhMjAwZDdiMjIyMDlkZTUwYSIsInNpdGVOYW1lIjoiU2F2aW5nQWR2aWNlIiwiYnJlYWtwb2ludHMiOnsidGFibGV0Ijo3NjgsImRlc2t0b3AiOjEwMjR9LCJjbG91ZGZsYXJlIjpudWxsLCJhZFVuaXRzIjpbeyJzZXF1ZW5jZSI6OSwidGhpcmRQYXJ0eUFkVW5pdE5hbWUiOiIiLCJ0YXJnZXRpbmciOlt7InZhbHVlIjpbIlNpZGViYXIiXSwia2V5IjoibG9jYXRpb24ifSx7InZhbHVlIjp0cnVlLCJrZXkiOiJzdGlja3kifV0sImRldmljZXMiOlsiZGVza3RvcCJdLCJuYW1lIjoiU2lkZWJhcl85Iiwic3RpY2t5Ijp0cnVlLCJsb2NhdGlvbiI6IlNpZGViYXIiLCJkeW5hbWljIjp7InBhZ2VTZWxlY3RvciI6IiIsInNwYWNpbmciOjAsIm1heCI6MSwibGF6eU1heCI6bnVsbCwiZW5hYmxlIjp0cnVlLCJsYXp5IjpmYWxzZSwiZWxlbWVudFNlbGVjdG9yIjoiLnNpZGViYXItcHJpbWFyeSIsInNraXAiOjAsImNsYXNzTmFtZXMiOltdLCJwb3NpdGlvbiI6ImJlZm9yZWVuZCIsImV2ZXJ5IjoxLCJlbmFibGVkIjp0cnVlfSwic3RpY2t5T3ZlcmxhcFNlbGVjdG9yIjoiLm5mb290LCAuc2l0ZS1mb290ZXIiLCJhZFNpemVzIjpbWzMwMCwyNTBdLFsxNjAsNjAwXSxbMzM2LDI4MF0sWzMyMCw1MF0sWzMwMCw2MDBdLFsyNTAsMjUwXSxbMSwxXSxbMzIwLDEwMF0sWzMwMCwxMDUwXSxbMzAwLDUwXSxbMzAwLDQyMF1dLCJwcmlvcml0eSI6MjkxLCJhdXRvc2l6ZSI6dHJ1ZX0seyJzZXF1ZW5jZSI6bnVsbCwidGhpcmRQYXJ0eUFkVW5pdE5hbWUiOiIiLCJ0YXJnZXRpbmciOlt7InZhbHVlIjpbIkNvbnRlbnQiXSwia2V5IjoibG9jYXRpb24ifV0sImRldmljZXMiOlsiZGVza3RvcCJdLCJuYW1lIjoiQ29udGVudCIsInN0aWNreSI6ZmFsc2UsImxvY2F0aW9uIjoiQ29udGVudCIsImR5bmFtaWMiOnsicGFnZVNlbGVjdG9yIjoiYm9keS5zaW5nbGUiLCJzcGFjaW5nIjowLCJtYXgiOjMsImxhenlNYXgiOjk2LCJlbmFibGUiOnRydWUsImxhenkiOnRydWUsImVsZW1lbnRTZWxlY3RvciI6Ii5lbnRyeS1jb250ZW50ID4gKjpub3QoaDIpOm5vdChoMyk6bm90KC5tYXJrZG93biksIC5lbnRyeS1jb250ZW50ID4gLm1hcmtkb3duID4gKjpub3QoaDIpOm5vdChoMykiLCJza2lwIjozLCJjbGFzc05hbWVzIjpbXSwicG9zaXRpb24iOiJhZnRlcmVuZCIsImV2ZXJ5IjoxLCJlbmFibGVkIjp0cnVlfSwic3RpY2t5T3ZlcmxhcFNlbGVjdG9yIjoiIiwiYWRTaXplcyI6W1szMDAsMjUwXSxbNzI4LDkwXSxbMzM2LDI4MF0sWzMyMCw1MF0sWzQ2OCw2MF0sWzk3MCw5MF0sWzI1MCwyNTBdLFsxLDFdLFszMjAsMTAwXSxbOTcwLDI1MF0sWzEsMl0sWzMwMCw1MF0sWzMwMCwzMDBdLFs1NTIsMzM0XSxbNzI4LDI1MF1dLCJwcmlvcml0eSI6MTk5LCJhdXRvc2l6ZSI6dHJ1ZX0seyJzZXF1ZW5jZSI6bnVsbCwidGhpcmRQYXJ0eUFkVW5pdE5hbWUiOiIiLCJ0YXJnZXRpbmciOlt7InZhbHVlIjpbIkNvbnRlbnQiXSwia2V5IjoibG9jYXRpb24ifV0sImRldmljZXMiOlsidGFibGV0IiwicGhvbmUiXSwibmFtZSI6IkNvbnRlbnQiLCJzdGlja3kiOmZhbHNlLCJsb2NhdGlvbiI6IkNvbnRlbnQiLCJkeW5hbWljIjp7InBhZ2VTZWxlY3RvciI6ImJvZHkuc2luZ2xlIiwic3BhY2luZyI6MCwibWF4Ijo2LCJsYXp5TWF4Ijo5MywiZW5hYmxlIjp0cnVlLCJsYXp5Ijp0cnVlLCJlbGVtZW50U2VsZWN0b3IiOiIuZW50cnktY29udGVudCA+ICo6bm90KGgyKTpub3QoaDMpOm5vdCgubWFya2Rvd24pLCAuZW50cnktY29udGVudCA+IC5tYXJrZG93biA+ICo6bm90KGgyKTpub3QoaDMpIiwic2tpcCI6MywiY2xhc3NOYW1lcyI6W10sInBvc2l0aW9uIjoiYWZ0ZXJlbmQiLCJldmVyeSI6MSwiZW5hYmxlZCI6dHJ1ZX0sInN0aWNreU92ZXJsYXBTZWxlY3RvciI6IiIsImFkU2l6ZXMiOltbMzAwLDI1MF0sWzcyOCw5MF0sWzMzNiwyODBdLFszMjAsNTBdLFs0NjgsNjBdLFs5NzAsOTBdLFsyNTAsMjUwXSxbMSwxXSxbMzIwLDEwMF0sWzk3MCwyNTBdLFsxLDJdLFszMDAsNTBdLFszMDAsMzAwXSxbNTUyLDMzNF0sWzcyOCwyNTBdXSwicHJpb3JpdHkiOjE5OSwiYXV0b3NpemUiOnRydWV9LHsic2VxdWVuY2UiOm51bGwsInRoaXJkUGFydHlBZFVuaXROYW1lIjoiIiwidGFyZ2V0aW5nIjpbeyJ2YWx1ZSI6WyJGb290ZXIiXSwia2V5IjoibG9jYXRpb24ifSx7InZhbHVlIjp0cnVlLCJrZXkiOiJzdGlja3kifV0sImRldmljZXMiOlsiZGVza3RvcCIsInBob25lIiwidGFibGV0Il0sIm5hbWUiOiJGb290ZXIiLCJzdGlja3kiOnRydWUsImxvY2F0aW9uIjoiRm9vdGVyIiwiZHluYW1pYyI6eyJwYWdlU2VsZWN0b3IiOiIiLCJzcGFjaW5nIjowLCJtYXgiOjEsImxhenlNYXgiOm51bGwsImVuYWJsZSI6dHJ1ZSwibGF6eSI6ZmFsc2UsImVsZW1lbnRTZWxlY3RvciI6ImJvZHkiLCJza2lwIjowLCJjbGFzc05hbWVzIjpbXSwicG9zaXRpb24iOiJiZWZvcmVlbmQiLCJldmVyeSI6MSwiZW5hYmxlZCI6dHJ1ZX0sInN0aWNreU92ZXJsYXBTZWxlY3RvciI6IiIsImFkU2l6ZXMiOltbNzI4LDkwXSxbMzIwLDUwXSxbNDY4LDYwXSxbOTcwLDkwXSxbMSwxXSxbMzIwLDEwMF0sWzMwMCw1MF1dLCJwcmlvcml0eSI6LTEsImF1dG9zaXplIjp0cnVlfV0sImFkRGVuc2l0eUxheW91dCI6eyJtb2JpbGUiOnsiYWREZW5zaXR5IjowLjIsIm9uZVBlclZpZXdwb3J0IjpmYWxzZX0sInBhZ2VPdmVycmlkZXMiOltdLCJkZXNrdG9wIjp7ImFkRGVuc2l0eSI6MC4yLCJvbmVQZXJWaWV3cG9ydCI6ZmFsc2V9fSwiYWREZW5zaXR5RW5hYmxlZCI6dHJ1ZSwic2l0ZUV4cGVyaW1lbnRzIjpbXSwiYWRUeXBlcyI6eyJzcG9uc29yVGlsZURlc2t0b3AiOnRydWUsImludGVyc2Nyb2xsZXJEZXNrdG9wIjp0cnVlLCJuYXRpdmVCZWxvd1Bvc3REZXNrdG9wIjp0cnVlLCJtaW5pc2Nyb2xsZXIiOnRydWUsImxhcmdlRm9ybWF0c01vYmlsZSI6dHJ1ZSwibmF0aXZlTW9iaWxlQ29udGVudCI6dHJ1ZSwiaW5SZWNpcGVSZWNvbW1lbmRhdGlvbk1vYmlsZSI6dHJ1ZSwibmF0aXZlTW9iaWxlUmVjaXBlIjp0cnVlLCJzcG9uc29yVGlsZU1vYmlsZSI6dHJ1ZSwiZXhwYW5kYWJsZUNhdGFsb2dBZHNNb2JpbGUiOnRydWUsImZyYW1lQWRzTW9iaWxlIjp0cnVlLCJvdXRzdHJlYW1Nb2JpbGUiOnRydWUsIm5hdGl2ZUhlYWRlck1vYmlsZSI6dHJ1ZSwiZnJhbWVBZHNEZXNrdG9wIjp0cnVlLCJpblJlY2lwZVJlY29tbWVuZGF0aW9uRGVza3RvcCI6dHJ1ZSwiZXhwYW5kYWJsZUZvb3RlckRlc2t0b3AiOnRydWUsIm5hdGl2ZURlc2t0b3BDb250ZW50Ijp0cnVlLCJvdXRzdHJlYW1EZXNrdG9wIjp0cnVlLCJhbmltYXRlZEZvb3RlciI6dHJ1ZSwiZXhwYW5kYWJsZUZvb3RlciI6dHJ1ZSwibmF0aXZlRGVza3RvcFNpZGViYXIiOnRydWUsInZpZGVvRm9vdGVyc01vYmlsZSI6ZmFsc2UsInZpZGVvRm9vdGVyc0Rlc2t0b3AiOmZhbHNlLCJpbnRlcnNjcm9sbGVyIjp0cnVlLCJuYXRpdmVEZXNrdG9wUmVjaXBlIjp0cnVlLCJuYXRpdmVIZWFkZXJEZXNrdG9wIjp0cnVlLCJuYXRpdmVCZWxvd1Bvc3RNb2JpbGUiOnRydWUsImV4cGFuZGFibGVDYXRhbG9nQWRzRGVza3RvcCI6dHJ1ZSwibGFyZ2VGb3JtYXRzRGVza3RvcCI6dHJ1ZX0sImFkT3B0aW9ucyI6eyJ0aGVUcmFkZURlc2siOnRydWUsInVzQ21wQ2xpY2tXcmFwIjp7ImVuYWJsZWQiOmZhbHNlLCJyZWdpb25zIjpbXX0sInVuZGVydG9uZSI6dHJ1ZSwic2lkZWJhckNvbmZpZyI6eyJkeW5hbWljU3RpY2t5U2lkZWJhciI6eyJtaW5IZWlnaHQiOjEyMDAsImVuYWJsZWQiOnRydWUsImJsb2NrZWRTZWxlY3RvcnMiOltdfX0sImZvb3RlckNsb3NlQnV0dG9uIjp0cnVlLCJ0ZWFkcyI6ZmFsc2UsInNlZWR0YWciOnRydWUsInBtcCI6ZmFsc2UsInRoaXJ0eVRocmVlQWNyb3NzIjp0cnVlLCJzaGFyZXRocm91Z2giOnRydWUsIm9wdGltaXplVmlkZW9QbGF5ZXJzRm9yRWFybmluZ3MiOnRydWUsInJlbW92ZVZpZGVvVGl0bGVXcmFwcGVyIjp0cnVlLCJwdWJNYXRpYyI6dHJ1ZSwiY29udGVudFRlcm1zRm9vdGVyRW5hYmxlZCI6dHJ1ZSwiY2hpY29yeSI6ZmFsc2UsImluZmluaXRlU2Nyb2xsIjpmYWxzZSwibG9uZ2VyVmlkZW9BZFBvZCI6dHJ1ZSwieWFob29zc3AiOnRydWUsInNwYSI6ZmFsc2UsInN0aWNreUNvbnRhaW5lckNvbmZpZyI6eyJyZWNpcGVEZXNrdG9wIjp7Im1pbkhlaWdodCI6bnVsbCwiZW5hYmxlZCI6ZmFsc2V9LCJibG9ja2VkU2VsZWN0b3JzIjpbXSwic3RpY2t5SGVhZGVyU2VsZWN0b3JzIjpbXSwiY29udGVudCI6eyJtaW5IZWlnaHQiOm51bGwsImVuYWJsZWQiOmZhbHNlfSwicmVjaXBlTW9iaWxlIjp7Im1pbkhlaWdodCI6bnVsbCwiZW5hYmxlZCI6ZmFsc2V9fSwiZ2F0ZWRQcmludCI6eyJwcmludENsYXNzZXMiOltdLCJzaXRlRW1haWxTZXJ2aWNlUHJvdmlkZXJJZCI6bnVsbCwiZGVmYXVsdE9wdEluIjpmYWxzZSwiY2xvc2VCdXR0b25FbmFibGVkIjpmYWxzZSwiZW5hYmxlZCI6ZmFsc2UsIm5ld3NsZXR0ZXJQcm9tcHRFbmFibGVkIjpmYWxzZX0sInlpZWxkbW8iOnRydWUsImZvb3RlclNlbGVjdG9yIjoiIiwiY29uc2VudE1vZGUiOnsiZW5hYmxlZCI6ZmFsc2UsImN1c3RvbVZlbmRvckxpc3QiOiIifSwiYW1hem9uVUFNIjpmYWxzZSwiZ2FtTUNNRW5hYmxlZCI6dHJ1ZSwiZ2FtTUNNQ2hpbGROZXR3b3JrQ29kZSI6IjIxNjc4MjQ2MzEwIiwicnViaWNvbiI6dHJ1ZSwiY29udmVyc2FudCI6ZmFsc2UsIm9wZW54Ijp0cnVlLCJjdXN0b21DcmVhdGl2ZUVuYWJsZWQiOnRydWUsInNlY0NvbG9yIjoiIzAwMDAwMCIsInVucnVseSI6dHJ1ZSwibWVkaWFHcmlkIjp0cnVlLCJiUmVhbFRpbWUiOnRydWUsImFkSW5WaWV3VGltZSI6bnVsbCwicmVndWxhdG9yeSI6eyJwcml2YWN5UG9saWN5VXJsIjoiIiwidGVybXNPZlNlcnZpY2VVcmwiOiIifSwiZ3VtZ3VtIjp0cnVlLCJjb21zY29yZUZvb3RlciI6dHJ1ZSwiZGVza3RvcEludGVyc3RpdGlhbCI6ZmFsc2UsImNvbnRlbnRBZFhFeHBhbnNpb25EZXNrdG9wIjp0cnVlLCJhbXgiOnRydWUsImZvb3RlckNsb3NlQnV0dG9uRGVza3RvcCI6ZmFsc2UsIm96b25lIjp0cnVlLCJpc0F1dG9PcHRpbWl6ZWQiOnRydWUsImNvbXNjb3JlVEFMIjp0cnVlLCJiZ0NvbG9yIjoiI0ZGRkZGRiIsImFkdmFuY2VQbGF5bGlzdE9wdGlvbnMiOnsicGxheWxpc3RQbGF5ZXIiOnsiZW5hYmxlZCI6dHJ1ZX0sInJlbGF0ZWRQbGF5ZXIiOnsiZW5hYmxlZCI6dHJ1ZSwiYXBwbHlUb0ZpcnN0Ijp0cnVlfX0sImthcmdvIjpmYWxzZSwibGl2ZVJhbXBBVFMiOnRydWUsImZvb3RlckNsb3NlQnV0dG9uTW9iaWxlIjpmYWxzZSwiaW50ZXJzdGl0aWFsQmxvY2tlZFBhZ2VTZWxlY3RvcnMiOiIiLCJwcmlvcml0aXplU2hvcnRlclZpZGVvQWRzIjp0cnVlLCJhbGxvd1NtYWxsZXJBZFNpemVzIjp0cnVlLCJibGlzIjp0cnVlLCJ3YWtlTG9jayI6eyJkZXNrdG9wRW5hYmxlZCI6dHJ1ZSwibW9iaWxlVmFsdWUiOjE1LCJtb2JpbGVFbmFibGVkIjp0cnVlLCJkZXNrdG9wVmFsdWUiOjMwfSwibW9iaWxlSW50ZXJzdGl0aWFsIjpmYWxzZSwidHJpcGxlTGlmdCI6dHJ1ZSwic2Vuc2l0aXZlQ2F0ZWdvcmllcyI6WyJhbGMiLCJhc3QiLCJjYmQiLCJjb3NtIiwiZGF0IiwiZ2FtYyIsInBvbCIsInJlbCIsInNzdCIsInNzciIsInNyaCIsInNrZSIsInRvYiIsInd0bCJdLCJsaXZlUmFtcCI6dHJ1ZSwiYWR0aHJpdmVFbWFpbElkZW50aXR5Ijp0cnVlLCJjcml0ZW8iOnRydWUsIm5hdGl2byI6dHJ1ZSwiaW5maW5pdGVTY3JvbGxPcHRpb25zIjp7InNlbGVjdG9yIjoiIiwiaGVpZ2h0VGhyZXNob2xkIjowfSwic2l0ZUF0dHJpYnV0ZXMiOnsibW9iaWxlSGVhZGVyU2VsZWN0b3JzIjpbXSwiZGVza3RvcEhlYWRlclNlbGVjdG9ycyI6W119LCJkeW5hbWljQ29udGVudFNsb3RMYXp5TG9hZGluZyI6dHJ1ZSwiY2xzT3B0aW1pemVkQWRzIjp0cnVlLCJvZ3VyeSI6dHJ1ZSwidmVydGljYWxzIjpbIlBlcnNvbmFsIEZpbmFuY2UiXSwiaW5JbWFnZSI6ZmFsc2UsInN0YWNrYWRhcHQiOnRydWUsInVzQ01QIjp7InJlZ2lvbnMiOltdLCJkZWZhdWx0T3B0SW4iOmZhbHNlLCJlbmFibGVkIjpmYWxzZSwic3RyaWN0TW9kZSI6ZmFsc2V9LCJjb250ZW50QWRYRXhwYW5zaW9uTW9iaWxlIjp0cnVlLCJhZHZhbmNlUGxheWxpc3QiOnRydWUsIm1lZGlhbmV0Ijp0cnVlLCJhY0Fsd2F5c1N0aWNreSI6ZmFsc2UsImRlbGF5TG9hZGluZyI6ZmFsc2UsImluSW1hZ2Vab25lIjpudWxsLCJhcHBOZXh1cyI6dHJ1ZSwicmlzZSI6dHJ1ZSwibGl2ZVJhbXBJZCI6IiIsImluZmluaXRlU2Nyb2xsUmVmcmVzaCI6dHJ1ZSwiaW5kZXhFeGNoYW5nZSI6dHJ1ZX0sInNpdGVBZHNQcm9maWxlcyI6W10sInRoaXJkUGFydHlTaXRlQ29uZmlnIjp7InBhcnRuZXJzIjp7ImRpc2NvdW50cyI6W119fSwidmlkZW9QbGF5ZXJzIjp7ImNvbnRleHR1YWwiOnsiYXV0b3BsYXlDb2xsYXBzaWJsZUVuYWJsZWQiOmZhbHNlLCJvdmVycmlkZUVtYmVkTG9jYXRpb24iOmZhbHNlLCJkZWZhdWx0UGxheWVyVHlwZSI6InN0YXRpYyJ9LCJ2aWRlb0VtYmVkIjoiZGl2IiwiZm9vdGVyU2VsZWN0b3IiOm51bGwsImNvbnRlbnRTcGVjaWZpY1BsYXlsaXN0cyI6W10sInBsYXllcnMiOlt7InBsYXlsaXN0SWQiOiI2Z1VIY2J5UiIsInBhZ2VTZWxlY3RvciI6ImJvZHkuc2luZ2xlIiwiZGV2aWNlcyI6WyJkZXNrdG9wIl0sImRlc2NyaXB0aW9uIjoiIiwic2tpcCI6MSwidGl0bGUiOiIiLCJ0eXBlIjoic3RpY2t5UGxheWxpc3QiLCJlbmFibGVkIjp0cnVlLCJlbGVtZW50U2VsZWN0b3IiOiIuZW50cnktY29udGVudCA+ICo6bm90KGgyKTpub3QoaDMpOm5vdCgubWFya2Rvd24pLCAuZW50cnktY29udGVudCA+IC5tYXJrZG93biA+ICo6bm90KGgyKTpub3QoaDMpIiwiaWQiOjQwOTIzNzEsInBvc2l0aW9uIjoiYWZ0ZXJlbmQiLCJzYXZlVmlkZW9DbG9zZVN0YXRlIjpmYWxzZSwic2h1ZmZsZSI6ZmFsc2UsImFkUGxheWVyVGl0bGUiOiJNWSBMQVRFU1QgVklERU9TIiwibW9iaWxlSGVhZGVyU2VsZWN0b3IiOm51bGwsInBsYXllcklkIjoiSktXaFFodmUifSx7InBsYXlsaXN0SWQiOiI2Z1VIY2J5UiIsInBhZ2VTZWxlY3RvciI6ImJvZHkuc2luZ2xlIiwiZGV2aWNlcyI6WyJtb2JpbGUiXSwibW9iaWxlTG9jYXRpb24iOiJ0b3AtY2VudGVyIiwiZGVzY3JpcHRpb24iOiIiLCJza2lwIjoxLCJ0aXRsZSI6IiIsInR5cGUiOiJzdGlja3lQbGF5bGlzdCIsImVuYWJsZWQiOnRydWUsImVsZW1lbnRTZWxlY3RvciI6Ii5lbnRyeS1jb250ZW50ID4gKjpub3QoaDIpOm5vdChoMyk6bm90KC5tYXJrZG93biksIC5lbnRyeS1jb250ZW50ID4gLm1hcmtkb3duID4gKjpub3QoaDIpOm5vdChoMykiLCJpZCI6NDA5MjM3MiwicG9zaXRpb24iOiJhZnRlcmVuZCIsInNhdmVWaWRlb0Nsb3NlU3RhdGUiOmZhbHNlLCJzaHVmZmxlIjpmYWxzZSwiYWRQbGF5ZXJUaXRsZSI6Ik1ZIExBVEVTVCBWSURFT1MiLCJtb2JpbGVIZWFkZXJTZWxlY3RvciI6bnVsbCwicGxheWVySWQiOiJKS1doUWh2ZSJ9LHsicGxheWxpc3RJZCI6IjZnVUhjYnlSIiwicGFnZVNlbGVjdG9yIjoiIiwiZGV2aWNlcyI6WyJtb2JpbGUiLCJkZXNrdG9wIl0sImRlc2NyaXB0aW9uIjoiIiwic2tpcCI6MCwidGl0bGUiOiJTdGF0aW9uYXJ5IHJlbGF0ZWQgcGxheWVyIC0gZGVza3RvcCBhbmQgbW9iaWxlIiwidHlwZSI6InN0YXRpb25hcnlSZWxhdGVkIiwiZW5hYmxlZCI6dHJ1ZSwiZWxlbWVudFNlbGVjdG9yIjoiIiwiaWQiOjQwOTIzNzAsInBvc2l0aW9uIjoiIiwic2F2ZVZpZGVvQ2xvc2VTdGF0ZSI6ZmFsc2UsInNodWZmbGUiOmZhbHNlLCJhZFBsYXllclRpdGxlIjoiU3RhdGlvbmFyeSByZWxhdGVkIHBsYXllciAtIGRlc2t0b3AgYW5kIG1vYmlsZSIsInBsYXllcklkIjoiSktXaFFodmUifV0sInBhcnRuZXJzIjp7InRoZVRyYWRlRGVzayI6dHJ1ZSwidW5ydWx5Ijp0cnVlLCJtZWRpYUdyaWQiOnRydWUsInVuZGVydG9uZSI6dHJ1ZSwiZ3VtZ3VtIjp0cnVlLCJzZWVkdGFnIjp0cnVlLCJhbXgiOnRydWUsIm96b25lIjp0cnVlLCJwbXAiOmZhbHNlLCJrYXJnbyI6ZmFsc2UsInN0aWNreU91dHN0cmVhbSI6eyJkZXNrdG9wIjp7ImVuYWJsZWQiOnRydWV9LCJibG9ja2VkUGFnZVNlbGVjdG9ycyI6IiIsIm1vYmlsZUxvY2F0aW9uIjoiYm90dG9tLWxlZnQiLCJhbGxvd09uSG9tZXBhZ2UiOnRydWUsIm1vYmlsZSI6eyJlbmFibGVkIjp0cnVlfSwic2F2ZVZpZGVvQ2xvc2VTdGF0ZSI6ZmFsc2UsIm1vYmlsZUhlYWRlclNlbGVjdG9yIjoiIiwiYWxsb3dGb3JQYWdlV2l0aFN0aWNreVBsYXllciI6eyJlbmFibGVkIjp0cnVlfX0sInNoYXJldGhyb3VnaCI6dHJ1ZSwiYmxpcyI6dHJ1ZSwidHJpcGxlTGlmdCI6dHJ1ZSwicHViTWF0aWMiOnRydWUsImNyaXRlbyI6dHJ1ZSwieWFob29zc3AiOnRydWUsIm5hdGl2byI6dHJ1ZSwic3RhY2thZGFwdCI6dHJ1ZSwieWllbGRtbyI6dHJ1ZSwiYW1hem9uVUFNIjpmYWxzZSwibWVkaWFuZXQiOnRydWUsInJ1Ymljb24iOnRydWUsImFwcE5leHVzIjp0cnVlLCJyaXNlIjp0cnVlLCJvcGVueCI6dHJ1ZSwiaW5kZXhFeGNoYW5nZSI6dHJ1ZX19fTs="></script> <script data-no-optimize="1" data-cfasync="false" data-type="lazy" data-src="data:text/javascript;base64,KGZ1bmN0aW9uKHcsIGQpIHsKCXcuYWR0aHJpdmUgPSB3LmFkdGhyaXZlIHx8IHt9OwoJdy5hZHRocml2ZS5jbWQgPSB3LmFkdGhyaXZlLmNtZCB8fCBbXTsKCXcuYWR0aHJpdmUucGx1Z2luID0gJ2FkdGhyaXZlLWFkcy0zLjEwLjAnOwoJdy5hZHRocml2ZS5ob3N0ID0gJ2Fkcy5hZHRocml2ZS5jb20nOwoJdy5hZHRocml2ZS5pbnRlZ3JhdGlvbiA9ICdwbHVnaW4nOwoKCXZhciBjb21taXRQYXJhbSA9ICh3LmFkdGhyaXZlQ0xTICYmIHcuYWR0aHJpdmVDTFMuYnVja2V0ICE9PSAncHJvZCcgJiYgdy5hZHRocml2ZUNMUy5icmFuY2gpID8gJyZjb21taXQ9JyArIHcuYWR0aHJpdmVDTFMuYnJhbmNoIDogJyc7CgoJdmFyIHMgPSBkLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwoJcy5hc3luYyA9IHRydWU7CglzLnJlZmVycmVycG9saWN5PSduby1yZWZlcnJlci13aGVuLWRvd25ncmFkZSc7CglzLnNyYyA9ICdodHRwczovLycgKyB3LmFkdGhyaXZlLmhvc3QgKyAnL3NpdGVzLzY5MTRmYjVhMjAwZDdiMjIyMDlkZTUwYS9hZHMubWluLmpzP3JlZmVycmVyPScgKyB3LmVuY29kZVVSSUNvbXBvbmVudCh3LmxvY2F0aW9uLmhyZWYpICsgY29tbWl0UGFyYW0gKyAnJmNiPScgKyAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwKSArIDEpICsgJyc7Cgl2YXIgbiA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOwoJbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLCBuKTsKfSkod2luZG93LCBkb2N1bWVudCk7"></script> <link rel="dns-prefetch" href="https://ads.adthrive.com/"><link rel="preconnect" href="https://ads.adthrive.com/"><link rel="preconnect" href="https://ads.adthrive.com/" crossorigin><link media="all" href="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/css/autoptimize_b6c0c7ca9005e4d99bb3a44d1471e509.css" rel="stylesheet"><link media="screen" href="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/css/autoptimize_468f59512ee035898ff55f2e641481e7.css" rel="stylesheet"><title>Homepage - SavingAdvice.com Blog</title><meta name="description" content="Saving Advice is a classic personal finance website featuring a vibrant community and a comprehensive library of news and topical articles. Join us today to help your financial journey along." /><link rel="canonical" href="https://www.savingadvice.com/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="website" /><meta property="og:title" content="Homepage" /><meta property="og:description" content="Saving Advice is a classic personal finance website featuring a vibrant community and a comprehensive library of news and topical articles. Join us today to help your financial journey along." /><meta property="og:url" content="https://www.savingadvice.com/" /><meta property="og:site_name" content="SavingAdvice.com Blog" /><meta property="article:modified_time" content="2025-02-27T18:31:13+00:00" /><meta property="og:image" content="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2023/11/149328477_m_normal_none-scaled.jpg" /><meta property="og:image:width" content="1000" /><meta property="og:image:height" content="667" /><meta property="og:image:type" content="image/jpeg" /><meta name="twitter:card" content="summary_large_image" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://www.savingadvice.com/","url":"https://www.savingadvice.com/","name":"Homepage - SavingAdvice.com Blog","isPartOf":{"@id":"https://www.savingadvice.com/#website"},"primaryImageOfPage":{"@id":"https://www.savingadvice.com/#primaryimage"},"image":{"@id":"https://www.savingadvice.com/#primaryimage"},"thumbnailUrl":"https://etyb2wffn3d.exactdn.com/wp-content/uploads/2023/11/149328477_m_normal_none-scaled.jpg?strip=all","datePublished":"2021-01-21T05:19:33+00:00","dateModified":"2025-02-27T18:31:13+00:00","description":"Saving Advice is a classic personal finance website featuring a vibrant community and a comprehensive library of news and topical articles. Join us today to help your financial journey along.","breadcrumb":{"@id":"https://www.savingadvice.com/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://www.savingadvice.com/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https://www.savingadvice.com/#primaryimage","url":"https://etyb2wffn3d.exactdn.com/wp-content/uploads/2023/11/149328477_m_normal_none-scaled.jpg?strip=all","contentUrl":"https://etyb2wffn3d.exactdn.com/wp-content/uploads/2023/11/149328477_m_normal_none-scaled.jpg?strip=all","width":1000,"height":667,"caption":"financial markets"},{"@type":"BreadcrumbList","@id":"https://www.savingadvice.com/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https://www.savingadvice.com/#website","url":"https://www.savingadvice.com/","name":"SavingAdvice.com Blog","description":"Bridging the gap between saving money and investing","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://www.savingadvice.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}</script> <meta name="google-site-verification" content="upCT60XbsLJuU0rStDe_vWwsy72Umn8AHuP8Vh9fidA" /><link rel='dns-prefetch' href='//widgetlogic.org' /><link rel='dns-prefetch' href='//etyb2wffn3d.exactdn.com' /><link href='https://ads.adthrive.com' rel='preconnect' /><link href='https://fonts.googleapis.com' rel='preconnect' /><link rel='preconnect' href='//etyb2wffn3d.exactdn.com' /><link rel="alternate" type="application/rss+xml" title="SavingAdvice.com Blog &raquo; Feed" href="https://www.savingadvice.com/feed/" /> <script type="text/javascript" id="wpp-js" src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wordpress-popular-posts/assets/js/wpp.min.js?ver=7.3.6" data-sampling="0" data-sampling-rate="100" data-api-url="https://www.savingadvice.com/wp-json/wordpress-popular-posts" data-post-id="0" data-token="d42d44ee14" data-lang="0" data-debug="0"></script> <script type="text/javascript" id="toolset-common-es-frontend-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_3f2388c21c15fd925916b9660d0d3e52.js?ver=175000"></script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script> <script type="text/javascript" id="dm-rss-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_49cea0a781874a962879c2caca9bc322.js?ver=1.0.0"></script> <script type="text/javascript" id="thumbs_rating_scripts-js-extra">var thumbs_rating_ajax = {"ajax_url":"https://www.savingadvice.com/wp-admin/admin-ajax.php","nonce":"9ac26077d6"};
//# sourceURL=thumbs_rating_scripts-js-extra</script> <script type="text/javascript" id="thumbs_rating_scripts-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_714fbc25e1ec87b55e5dac498dba6721.js?ver=4.0.1"></script> <script type="text/javascript" id="wp-hide-post-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_49cea0a781874a962879c2caca9bc322.js?ver=2.0.10"></script> <script type="text/javascript" id="taxopress-frontend-js-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_8fa2b9763d58f6cffcb0218dcc145b02.js?ver=3.44.0"></script> <link rel="preconnect" href="https://fonts.googleapis.com">  <script type="text/javascript">// Insert Twitter Event ID
//   twq('event', 'tw-o7kq3-od2vs', {
//     contents: [ // use this to pass an array of products or content
//         // add all items to the array
//         // use this for the first item
//         {
//           content_type: null,
//           content_id: null,
//           content_name: null,
//           content_price: null,
//           num_items: null,
//           content_group_id: null
//         },
//         // use this for the second item
//         {
//           content_type: null,
//           content_id: null,
//           content_name: null,
//           content_price: null,
//           num_items: null,
//           content_group_id: null
//         }] 
//   });</script>    <script async src="https://www.googletagmanager.com/gtag/js?id=G-CNNTZMHPY4"></script> <script>window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-CNNTZMHPY4');</script>    <script nonce="2u2PH9PF" data-type="lazy" data-src="data:text/javascript;base64,IWZ1bmN0aW9uKGYsYixlLHYsbix0LHMpe2lmKGYuZmJxKXJldHVybjtuPWYuZmJxPWZ1bmN0aW9uKCl7bi5jYWxsTWV0aG9kPwpuLmNhbGxNZXRob2QuYXBwbHkobixhcmd1bWVudHMpOm4ucXVldWUucHVzaChhcmd1bWVudHMpfTtpZighZi5fZmJxKWYuX2ZicT1uOwpuLnB1c2g9bjtuLmxvYWRlZD0hMDtuLnZlcnNpb249JzIuMCc7bi5xdWV1ZT1bXTt0PWIuY3JlYXRlRWxlbWVudChlKTt0LmFzeW5jPSEwOwp0LnNyYz12O3M9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShlKVswXTtzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQscyl9KHdpbmRvdywKZG9jdW1lbnQsJ3NjcmlwdCcsJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvZmJldmVudHMuanMnKTsKCmZicSgnaW5pdCcsICcyMDY2NTkxNTk2OTYyNzMzJyk7CmZicSgndHJhY2snLCAiUGFnZVZpZXciKTs="></script> <noscript><img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=2066591596962733&ev=PageView&noscript=1"
/></noscript>  <script>fbq('track', 'Lead', {value: '0.01', currency: 'USD'})</script> <meta name="p:domain_verify" content="8960b05bbf3b471682e94ce3763c23e4"/><meta name="ahrefs-site-verification" content="c80614f350cac07ad27ebc51a4924c4fe61d2edccafe2e5c66684301a45dbc82">  <script async src="https://www.googletagmanager.com/gtag/js?id=AW-964377345"></script> <script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'AW-964377345');</script>  <script>gtag('event', 'conversion', {'send_to': 'AW-964377345/i4UjCMm809ICEIH27MsD'});</script>  <script>!function(e){if(!window.pintrk){window.pintrk = function () {
window.pintrk.queue.push(Array.prototype.slice.call(arguments))};var
  n=window.pintrk;n.queue=[],n.version="3.0";var
  t=document.createElement("script");t.async=!0,t.src=e;var
  r=document.getElementsByTagName("script")[0];
  r.parentNode.insertBefore(t,r)}}("https://s.pinimg.com/ct/core.js");
pintrk('load', '2613868169729', {em: '<user_email_address>'});
pintrk('page');</script> <noscript> <img height="1" width="1" style="display:none;" alt=""
 src="https://ct.pinterest.com/v3/?event=init&tid=2613868169729&pd[em]=<hashed_email_address>&noscript=1" /> </noscript>  <script>pintrk('track', 'pagevisit');</script> <script type="text/javascript">// (function(c,l,a,r,i,t,y){
    //     c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
    //     t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
    //     y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);
    // })(window, document, "clarity", "script", "7vs79tg8ac");</script> <meta name="getlinko-verify-code" content="getlinko-verify-059541266004288a514d988ba61a88fb51614aa3"/><div id="hide-grow-widget"></div><meta name='outreach_verification' content='nfI43aZp9j1K94OsLhp7' /><meta name="publication-media-verification" content="50f1b5d65da24ed08273329d3cf75e43" /> <script>!function () {var reb2b = window.reb2b = window.reb2b || [];if (reb2b.invoked) return;reb2b.invoked = true;reb2b.methods = ["identify", "collect"];reb2b.factory = function (method) {return function () {var args = Array.prototype.slice.call(arguments);args.unshift(method);reb2b.push(args);return reb2b;};};for (var i = 0; i < reb2b.methods.length; i++) {var key = reb2b.methods[i];reb2b[key] = reb2b.factory(key);}reb2b.load = function (key) {var script = document.createElement("script");script.type = "text/javascript";script.async = true;script.src = "https://s3-us-west-2.amazonaws.com/b2bjsstore/b/" + key + "/4O7Z0HM2VGNX.js.gz";var first = document.getElementsByTagName("script")[0];first.parentNode.insertBefore(script, first);};reb2b.SNIPPET_VERSION = "1.0.1";reb2b.load("4O7Z0HM2VGNX");}();</script>  <script type="text/javascript">// Insert Twitter Event ID
  twq('event', 'tw-o7kq3-od2vs', {
    conversion_id: null // use this to pass a unique ID for the conversion event for deduplication (e.g. order id '1a2b3c')
  });</script>    <script type="text/javascript">// Insert Twitter Event ID
  twq('event', 'tw-o7kq3-ozcwy', {
    value: null, // use this to pass the value of the conversion (e.g. 5.00)
    currency: null, // use this to pass the currency of the conversion with an ISO 4217 code (e.g. ‘USD’)
    contents: [ // use this to pass an array of products or content
        // add all items to the array
        // use this for the first item
        {
          content_type: null,
          content_id: null,
          content_name: null,
          content_price: null,
          num_items: null,
          content_group_id: null
        },
        // use this for the second item
        {
          content_type: null,
          content_id: null,
          content_name: null,
          content_price: null,
          num_items: null,
          content_group_id: null
        }], 
    conversion_id: null, // use this to pass a unique ID for the conversion event for deduplication (e.g. order id '1a2b3c')
    email_address: null, // use this to pass a user’s email address
    phone_number: null // phone number in E164 standard
  });</script>    <script>!function(e,t,n,s,u,a){e.twq||(s=e.twq=function(){s.exe?s.exe.apply(s,arguments):s.queue.push(arguments);
},s.version='1.1',s.queue=[],u=t.createElement(n),u.async=!0,u.src='https://static.ads-twitter.com/uwt.js',
a=t.getElementsByTagName(n)[0],a.parentNode.insertBefore(u,a))}(window,document,'script');
twq('config','o7kq3');</script>  <script src="https://cdn.brevo.com/js/sdk-loader.js" async></script> <script>// Version: 2.0
    window.Brevo = window.Brevo || [];
    Brevo.push([
        "init",
        {
        client_key: "brpfco6dc7rl9vm0aag9a6wl"
        }
    ]);</script> <link rel="icon" href="https://etyb2wffn3d.exactdn.com/wp-content/themes/savingadvice20/images/favicon.ico" /><meta name="msvalidate.01" content="327DBA063A035DA38C3CAC69F1424561" /> <script>window.addEventListener("load",function(){ var c={script:false,link:false}; function ls(s) { if(!['script','link'].includes(s)||c[s]){return;}c[s]=true; var d=document,f=d.getElementsByTagName(s)[0],j=d.createElement(s); if(s==='script'){j.async=true;j.src='https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-views/vendor/toolset/blocks/public/js/frontend.js?v=1.6.17';}else{ j.rel='stylesheet';j.href='https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-views/vendor/toolset/blocks/public/css/style.css?v=1.6.17';} f.parentNode.insertBefore(j, f); }; function ex(){ls('script');ls('link')} window.addEventListener("scroll", ex, {once: true}); if (('IntersectionObserver' in window) && ('IntersectionObserverEntry' in window) && ('intersectionRatio' in window.IntersectionObserverEntry.prototype)) { var i = 0, fb = document.querySelectorAll("[class^='tb-']"), o = new IntersectionObserver(es => { es.forEach(e => { o.unobserve(e.target); if (e.intersectionRatio > 0) { ex();o.disconnect();}else{ i++;if(fb.length>i){o.observe(fb[i])}} }) }); if (fb.length) { o.observe(fb[i]) } } })</script> <noscript><link rel="stylesheet" href="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-views/vendor/toolset/blocks/public/css/style.css"> </noscript><script data-no-optimize='1' data-cfasync='false' id='comscore-loader-b676c16' data-type="lazy" data-src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7d2luZG93LmFkdGhyaXZlQ0xTLmJ1aWxkRGF0ZT1gMjAyNi0wMi0xM2A7dmFyIGU9KGUsdCk9PigpPT4odHx8ZSgodD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsdCksdC5leHBvcnRzKSx0PWUoKChlLHQpPT57dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09PU1hdGgmJmV9O3QuZXhwb3J0cz1uKHR5cGVvZiBnbG9iYWxUaGlzPT1gb2JqZWN0YCYmZ2xvYmFsVGhpcyl8fG4odHlwZW9mIHdpbmRvdz09YG9iamVjdGAmJndpbmRvdyl8fG4odHlwZW9mIHNlbGY9PWBvYmplY3RgJiZzZWxmKXx8bih0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsKXx8bih0eXBlb2YgZT09YG9iamVjdGAmJmUpfHwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKCl8fEZ1bmN0aW9uKGByZXR1cm4gdGhpc2ApKCl9KSksbj1lKCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0pKSxyPWUoKChlLHQpPT57dC5leHBvcnRzPSFuKCkoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT09N30pfSkpLGk9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9IW4oKShmdW5jdGlvbigpe3ZhciBlPShmdW5jdGlvbigpe30pLmJpbmQoKTtyZXR1cm4gdHlwZW9mIGUhPWBmdW5jdGlvbmB8fGUuaGFzT3duUHJvcGVydHkoYHByb3RvdHlwZWApfSl9KSksYT1lKCgoZSx0KT0+e3ZhciBuPWkoKSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO3QuZXhwb3J0cz1uP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19KSksbz1lKChlPT57dmFyIHQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uJiYhdC5jYWxsKHsxOjJ9LDEpP2Z1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06dH0pKSxzPWUoKChlLHQpPT57dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6IShlJjEpLGNvbmZpZ3VyYWJsZTohKGUmMiksd3JpdGFibGU6IShlJjQpLHZhbHVlOnR9fX0pKSxjPWUoKChlLHQpPT57dmFyIG49aSgpLHI9RnVuY3Rpb24ucHJvdG90eXBlLGE9ci5jYWxsLG89biYmci5iaW5kLmJpbmQoYSxhKTt0LmV4cG9ydHM9bj9vOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGUsYXJndW1lbnRzKX19fSkpLGw9ZSgoKGUsdCk9Pnt2YXIgbj1jKCkscj1uKHt9LnRvU3RyaW5nKSxpPW4oYGAuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShyKGUpLDgsLTEpfX0pKSx1PWUoKChlLHQpPT57dmFyIHI9YygpLGk9bigpLGE9bCgpLG89T2JqZWN0LHM9cihgYC5zcGxpdCk7dC5leHBvcnRzPWkoZnVuY3Rpb24oKXtyZXR1cm4hbyhgemApLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk9PT1gU3RyaW5nYD9zKGUsYGApOm8oZSl9Om99KSksZD1lKCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbH19KSksZj1lKCgoZSx0KT0+e3ZhciBuPWQoKSxyPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSl0aHJvdyBuZXcgcihgQ2FuJ3QgY2FsbCBtZXRob2Qgb24gYCtlKTtyZXR1cm4gZX19KSkscD1lKCgoZSx0KT0+e3ZhciBuPXUoKSxyPWYoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocihlKSl9fSkpLG09ZSgoKGUsdCk9Pnt2YXIgbj10eXBlb2YgZG9jdW1lbnQ9PWBvYmplY3RgJiZkb2N1bWVudC5hbGw7dC5leHBvcnRzPW49PT12b2lkIDAmJm4hPT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfHxlPT09bn06ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfX0pKSxoPWUoKChlLHQpPT57dmFyIG49bSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBvYmplY3RgP2UhPT1udWxsOm4oZSl9fSkpLGc9ZSgoKGUsbik9Pnt2YXIgcj10KCksaT1tKCksYT1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9lOnZvaWQgMH07bi5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9hKHJbZV0pOnJbZV0mJnJbZV1bdF19fSkpLF89ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9YygpKHt9LmlzUHJvdG90eXBlT2YpfSkpLHY9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9dHlwZW9mIG5hdmlnYXRvcjxgdWAmJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8YGB9KSkseT1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPXYoKSxhPXIucHJvY2VzcyxvPXIuRGVubyxzPWEmJmEudmVyc2lvbnN8fG8mJm8udmVyc2lvbixjPXMmJnMudjgsbCx1O2MmJihsPWMuc3BsaXQoYC5gKSx1PWxbMF0+MCYmbFswXTw0PzE6KyhsWzBdK2xbMV0pKSwhdSYmaSYmKGw9aS5tYXRjaCgvRWRnZVwvKFxkKykvKSwoIWx8fGxbMV0+PTc0KSYmKGw9aS5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pLGwmJih1PStsWzFdKSkpLG4uZXhwb3J0cz11fSkpLGI9ZSgoKGUscik9Pnt2YXIgaT15KCksYT1uKCksbz10KCkuU3RyaW5nO3IuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFhKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKGBzeW1ib2wgZGV0ZWN0aW9uYCk7cmV0dXJuIW8oZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmkmJmk8NDF9KX0pKSx4PWUoKChlLHQpPT57dC5leHBvcnRzPWIoKSYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYH0pKSxTPWUoKChlLHQpPT57dmFyIG49ZygpLHI9bSgpLGk9XygpLGE9eCgpLG89T2JqZWN0O3QuZXhwb3J0cz1hP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09YHN5bWJvbGB9OmZ1bmN0aW9uKGUpe3ZhciB0PW4oYFN5bWJvbGApO3JldHVybiByKHQpJiZpKHQucHJvdG90eXBlLG8oZSkpfX0pKSxDPWUoKChlLHQpPT57dmFyIG49U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIG4oZSl9Y2F0Y2goZSl7cmV0dXJuYE9iamVjdGB9fX0pKSxlZT1lKCgoZSx0KT0+e3ZhciBuPW0oKSxyPUMoKSxpPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgaShyKGUpK2AgaXMgbm90IGEgZnVuY3Rpb25gKX19KSksdz1lKCgoZSx0KT0+e3ZhciBuPWVlKCkscj1kKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGk9ZVt0XTtyZXR1cm4gcihpKT92b2lkIDA6bihpKX19KSksdGU9ZSgoKGUsdCk9Pnt2YXIgbj1hKCkscj1tKCksaT1oKCksbz1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGEscztpZih0PT09YHN0cmluZ2AmJnIoYT1lLnRvU3RyaW5nKSYmIWkocz1uKGEsZSkpfHxyKGE9ZS52YWx1ZU9mKSYmIWkocz1uKGEsZSkpfHx0IT09YHN0cmluZ2AmJnIoYT1lLnRvU3RyaW5nKSYmIWkocz1uKGEsZSkpKXJldHVybiBzO3Rocm93IG5ldyBvKGBDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVgKX19KSksbmU9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9ITF9KSksVD1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTtuLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7aShyLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gobil7cltlXT10fXJldHVybiB0fX0pKSxFPWUoKChlLG4pPT57dmFyIHI9bmUoKSxpPXQoKSxhPVQoKSxvPWBfX2NvcmUtanNfc2hhcmVkX19gLHM9bi5leHBvcnRzPWlbb118fGEobyx7fSk7KHMudmVyc2lvbnN8fChzLnZlcnNpb25zPVtdKSkucHVzaCh7dmVyc2lvbjpgMy4zNi4xYCxtb2RlOnI/YHB1cmVgOmBnbG9iYWxgLGNvcHlyaWdodDpgwqkgMjAxNC0yMDI0IERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpYCxsaWNlbnNlOmBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9ibG9iL3YzLjM2LjEvTElDRU5TRWAsc291cmNlOmBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qc2B9KX0pKSxEPWUoKChlLHQpPT57dmFyIG49RSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBuW2VdfHwobltlXT10fHx7fSl9fSkpLHJlPWUoKChlLHQpPT57dmFyIG49ZigpLHI9T2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gcihuKGUpKX19KSksTz1lKCgoZSx0KT0+e3ZhciBuPWMoKSxyPXJlKCksaT1uKHt9Lmhhc093blByb3BlcnR5KTt0LmV4cG9ydHM9T2JqZWN0Lmhhc093bnx8ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShyKGUpLHQpfX0pKSxrPWUoKChlLHQpPT57dmFyIG49YygpLHI9MCxpPU1hdGgucmFuZG9tKCksYT1uKDEgLnRvU3RyaW5nKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuYFN5bWJvbChgKyhlPT09dm9pZCAwP2BgOmUpK2ApX2ArYSgrK3IraSwzNil9fSkpLGllPWUoKChlLG4pPT57dmFyIHI9dCgpLGk9RCgpLGE9TygpLG89aygpLHM9YigpLGM9eCgpLGw9ci5TeW1ib2wsdT1pKGB3a3NgKSxkPWM/bC5mb3J8fGw6bCYmbC53aXRob3V0U2V0dGVyfHxvO24uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gYSh1LGUpfHwodVtlXT1zJiZhKGwsZSk/bFtlXTpkKGBTeW1ib2wuYCtlKSksdVtlXX19KSksQT1lKCgoZSx0KT0+e3ZhciBuPWEoKSxyPWgoKSxpPVMoKSxvPXcoKSxzPXRlKCksYz1pZSgpLGw9VHlwZUVycm9yLHU9YyhgdG9QcmltaXRpdmVgKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighcihlKXx8aShlKSlyZXR1cm4gZTt2YXIgYT1vKGUsdSksYztpZihhKXtpZih0PT09dm9pZCAwJiYodD1gZGVmYXVsdGApLGM9bihhLGUsdCksIXIoYyl8fGkoYykpcmV0dXJuIGM7dGhyb3cgbmV3IGwoYENhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZWApfXJldHVybiB0PT09dm9pZCAwJiYodD1gbnVtYmVyYCkscyhlLHQpfX0pKSxqPWUoKChlLHQpPT57dmFyIG49QSgpLHI9UygpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsYHN0cmluZ2ApO3JldHVybiByKHQpP3Q6dCtgYH19KSksYWU9ZSgoKGUsbik9Pnt2YXIgcj10KCksaT1oKCksYT1yLmRvY3VtZW50LG89aShhKSYmaShhLmNyZWF0ZUVsZW1lbnQpO24uZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbz9hLmNyZWF0ZUVsZW1lbnQoZSk6e319fSkpLE09ZSgoKGUsdCk9Pnt2YXIgaT1yKCksYT1uKCksbz1hZSgpO3QuZXhwb3J0cz0haSYmIWEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8oYGRpdmApLGBhYCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9PTd9KX0pKSxOPWUoKGU9Pnt2YXIgdD1yKCksbj1hKCksaT1vKCksYz1zKCksbD1wKCksdT1qKCksZD1PKCksZj1NKCksbT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj10P206ZnVuY3Rpb24oZSx0KXtpZihlPWwoZSksdD11KHQpLGYpdHJ5e3JldHVybiBtKGUsdCl9Y2F0Y2goZSl7fWlmKGQoZSx0KSlyZXR1cm4gYyghbihpLmYsZSx0KSxlW3RdKX19KSksb2U9ZSgoKGUsdCk9Pnt2YXIgaT1yKCksYT1uKCk7dC5leHBvcnRzPWkmJmEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSxgcHJvdG90eXBlYCx7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGUhPT00Mn0pfSkpLFA9ZSgoKGUsdCk9Pnt2YXIgbj1oKCkscj1TdHJpbmcsaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgbmV3IGkocihlKStgIGlzIG5vdCBhbiBvYmplY3RgKX19KSksRj1lKChlPT57dmFyIHQ9cigpLG49TSgpLGk9b2UoKSxhPVAoKSxvPWooKSxzPVR5cGVFcnJvcixjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdT1gZW51bWVyYWJsZWAsZD1gY29uZmlndXJhYmxlYCxmPWB3cml0YWJsZWA7ZS5mPXQ/aT9mdW5jdGlvbihlLHQsbil7aWYoYShlKSx0PW8odCksYShuKSx0eXBlb2YgZT09YGZ1bmN0aW9uYCYmdD09PWBwcm90b3R5cGVgJiZgdmFsdWVgaW4gbiYmZiBpbiBuJiYhbltmXSl7dmFyIHI9bChlLHQpO3ImJnJbZl0mJihlW3RdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOmQgaW4gbj9uW2RdOnJbZF0sZW51bWVyYWJsZTp1IGluIG4/blt1XTpyW3VdLHdyaXRhYmxlOiExfSl9cmV0dXJuIGMoZSx0LG4pfTpjOmZ1bmN0aW9uKGUsdCxyKXtpZihhKGUpLHQ9byh0KSxhKHIpLG4pdHJ5e3JldHVybiBjKGUsdCxyKX1jYXRjaChlKXt9aWYoYGdldGBpbiByfHxgc2V0YGluIHIpdGhyb3cgbmV3IHMoYEFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkYCk7cmV0dXJuYHZhbHVlYGluIHImJihlW3RdPXIudmFsdWUpLGV9fSkpLEk9ZSgoKGUsdCk9Pnt2YXIgbj1yKCksaT1GKCksYT1zKCk7dC5leHBvcnRzPW4/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBpLmYoZSx0LGEoMSxuKSl9OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZVt0XT1uLGV9fSkpLHNlPWUoKChlLHQpPT57dmFyIG49cigpLGk9TygpLGE9RnVuY3Rpb24ucHJvdG90eXBlLG89biYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzPWkoYSxgbmFtZWApO3QuZXhwb3J0cz17RVhJU1RTOnMsUFJPUEVSOnMmJihmdW5jdGlvbigpe30pLm5hbWU9PT1gc29tZXRoaW5nYCxDT05GSUdVUkFCTEU6cyYmKCFufHxuJiZvKGEsYG5hbWVgKS5jb25maWd1cmFibGUpfX0pKSxjZT1lKCgoZSx0KT0+e3ZhciBuPWMoKSxyPW0oKSxpPUUoKSxhPW4oRnVuY3Rpb24udG9TdHJpbmcpO3IoaS5pbnNwZWN0U291cmNlKXx8KGkuaW5zcGVjdFNvdXJjZT1mdW5jdGlvbihlKXtyZXR1cm4gYShlKX0pLHQuZXhwb3J0cz1pLmluc3BlY3RTb3VyY2V9KSksTD1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPW0oKSxhPXIuV2Vha01hcDtuLmV4cG9ydHM9aShhKSYmL25hdGl2ZSBjb2RlLy50ZXN0KFN0cmluZyhhKSl9KSksUj1lKCgoZSx0KT0+e3ZhciBuPUQoKSxyPWsoKSxpPW4oYGtleXNgKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV18fChpW2VdPXIoZSkpfX0pKSx6PWUoKChlLHQpPT57dC5leHBvcnRzPXt9fSkpLEI9ZSgoKGUsbik9Pnt2YXIgcj1MKCksaT10KCksYT1oKCksbz1JKCkscz1PKCksYz1FKCksbD1SKCksdT16KCksZD1gT2JqZWN0IGFscmVhZHkgaW5pdGlhbGl6ZWRgLGY9aS5UeXBlRXJyb3IscD1pLldlYWtNYXAsbSxnLF8sdj1mdW5jdGlvbihlKXtyZXR1cm4gXyhlKT9nKGUpOm0oZSx7fSl9LHk9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3ZhciBuO2lmKCFhKHQpfHwobj1nKHQpKS50eXBlIT09ZSl0aHJvdyBuZXcgZihgSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBgK2UrYCByZXF1aXJlZGApO3JldHVybiBufX07aWYocnx8Yy5zdGF0ZSl7dmFyIGI9Yy5zdGF0ZXx8KGMuc3RhdGU9bmV3IHApO2IuZ2V0PWIuZ2V0LGIuaGFzPWIuaGFzLGIuc2V0PWIuc2V0LG09ZnVuY3Rpb24oZSx0KXtpZihiLmhhcyhlKSl0aHJvdyBuZXcgZihkKTtyZXR1cm4gdC5mYWNhZGU9ZSxiLnNldChlLHQpLHR9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIGIuZ2V0KGUpfHx7fX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gYi5oYXMoZSl9fWVsc2V7dmFyIHg9bChgc3RhdGVgKTt1W3hdPSEwLG09ZnVuY3Rpb24oZSx0KXtpZihzKGUseCkpdGhyb3cgbmV3IGYoZCk7cmV0dXJuIHQuZmFjYWRlPWUsbyhlLHgsdCksdH0sZz1mdW5jdGlvbihlKXtyZXR1cm4gcyhlLHgpP2VbeF06e319LF89ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSx4KX19bi5leHBvcnRzPXtzZXQ6bSxnZXQ6ZyxoYXM6XyxlbmZvcmNlOnYsZ2V0dGVyRm9yOnl9fSkpLFY9ZSgoKGUsdCk9Pnt2YXIgaT1jKCksYT1uKCksbz1tKCkscz1PKCksbD1yKCksdT1zZSgpLkNPTkZJR1VSQUJMRSxkPWNlKCksZj1CKCkscD1mLmVuZm9yY2UsaD1mLmdldCxnPVN0cmluZyxfPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx2PWkoYGAuc2xpY2UpLHk9aShgYC5yZXBsYWNlKSxiPWkoW10uam9pbikseD1sJiYhYShmdW5jdGlvbigpe3JldHVybiBfKGZ1bmN0aW9uKCl7fSxgbGVuZ3RoYCx7dmFsdWU6OH0pLmxlbmd0aCE9PTh9KSxTPVN0cmluZyhTdHJpbmcpLnNwbGl0KGBTdHJpbmdgKSxDPXQuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dihnKHQpLDAsNyk9PT1gU3ltYm9sKGAmJih0PWBbYCt5KGcodCksL15TeW1ib2xcKChbXildKilcKS4qJC8sYCQxYCkrYF1gKSxuJiZuLmdldHRlciYmKHQ9YGdldCBgK3QpLG4mJm4uc2V0dGVyJiYodD1gc2V0IGArdCksKCFzKGUsYG5hbWVgKXx8dSYmZS5uYW1lIT09dCkmJihsP18oZSxgbmFtZWAse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwfSk6ZS5uYW1lPXQpLHgmJm4mJnMobixgYXJpdHlgKSYmZS5sZW5ndGghPT1uLmFyaXR5JiZfKGUsYGxlbmd0aGAse3ZhbHVlOm4uYXJpdHl9KTt0cnl7biYmcyhuLGBjb25zdHJ1Y3RvcmApJiZuLmNvbnN0cnVjdG9yP2wmJl8oZSxgcHJvdG90eXBlYCx7d3JpdGFibGU6ITF9KTplLnByb3RvdHlwZSYmKGUucHJvdG90eXBlPXZvaWQgMCl9Y2F0Y2goZSl7fXZhciByPXAoZSk7cmV0dXJuIHMocixgc291cmNlYCl8fChyLnNvdXJjZT1iKFMsdHlwZW9mIHQ9PWBzdHJpbmdgP3Q6YGApKSxlfTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9QyhmdW5jdGlvbigpe3JldHVybiBvKHRoaXMpJiZoKHRoaXMpLnNvdXJjZXx8ZCh0aGlzKX0sYHRvU3RyaW5nYCl9KSksSD1lKCgoZSx0KT0+e3ZhciBuPW0oKSxyPUYoKSxpPVYoKSxhPVQoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG8scyl7c3x8KHM9e30pO3ZhciBjPXMuZW51bWVyYWJsZSxsPXMubmFtZT09PXZvaWQgMD90OnMubmFtZTtpZihuKG8pJiZpKG8sbCxzKSxzLmdsb2JhbCljP2VbdF09bzphKHQsbyk7ZWxzZXt0cnl7cy51bnNhZmU/ZVt0XSYmKGM9ITApOmRlbGV0ZSBlW3RdfWNhdGNoKGUpe31jP2VbdF09bzpyLmYoZSx0LHt2YWx1ZTpvLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiFzLm5vbkNvbmZpZ3VyYWJsZSx3cml0YWJsZTohcy5ub25Xcml0YWJsZX0pfXJldHVybiBlfX0pKSxVPWUoKChlLHQpPT57dmFyIG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjt0LmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuKHQ+MD9yOm4pKHQpfX0pKSxXPWUoKChlLHQpPT57dmFyIG49VSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD0rZTtyZXR1cm4gdCE9PXR8fHQ9PT0wPzA6bih0KX19KSksRz1lKCgoZSx0KT0+e3ZhciBuPVcoKSxyPU1hdGgubWF4LGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIGE9bihlKTtyZXR1cm4gYTwwP3IoYSt0LDApOmkoYSx0KX19KSksbGU9ZSgoKGUsdCk9Pnt2YXIgbj1XKCkscj1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9bihlKTtyZXR1cm4gdD4wP3IodCw5MDA3MTk5MjU0NzQwOTkxKTowfX0pKSx1ZT1lKCgoZSx0KT0+e3ZhciBuPWxlKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKGUubGVuZ3RoKX19KSksZGU9ZSgoKGUsdCk9Pnt2YXIgbj1wKCkscj1HKCksaT11ZSgpLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsYSxvKXt2YXIgcz1uKHQpLGM9aShzKTtpZihjPT09MClyZXR1cm4hZSYmLTE7dmFyIGw9cihvLGMpLHU7aWYoZSYmYSE9PWEpe2Zvcig7Yz5sOylpZih1PXNbbCsrXSx1IT09dSlyZXR1cm4hMH1lbHNlIGZvcig7Yz5sO2wrKylpZigoZXx8bCBpbiBzKSYmc1tsXT09PWEpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07dC5leHBvcnRzPXtpbmNsdWRlczphKCEwKSxpbmRleE9mOmEoITEpfX0pKSxmZT1lKCgoZSx0KT0+e3ZhciBuPWMoKSxyPU8oKSxpPXAoKSxhPWRlKCkuaW5kZXhPZixvPXooKSxzPW4oW10ucHVzaCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49aShlKSxjPTAsbD1bXSx1O2Zvcih1IGluIG4pIXIobyx1KSYmcihuLHUpJiZzKGwsdSk7Zm9yKDt0Lmxlbmd0aD5jOylyKG4sdT10W2MrK10pJiYofmEobCx1KXx8cyhsLHUpKTtyZXR1cm4gbH19KSkscGU9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9W2Bjb25zdHJ1Y3RvcmAsYGhhc093blByb3BlcnR5YCxgaXNQcm90b3R5cGVPZmAsYHByb3BlcnR5SXNFbnVtZXJhYmxlYCxgdG9Mb2NhbGVTdHJpbmdgLGB0b1N0cmluZ2AsYHZhbHVlT2ZgXX0pKSxtZT1lKChlPT57dmFyIHQ9ZmUoKSxuPXBlKCkuY29uY2F0KGBsZW5ndGhgLGBwcm90b3R5cGVgKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9fSkpLGhlPWUoKGU9PntlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30pKSxLPWUoKChlLHQpPT57dmFyIG49ZygpLHI9YygpLGk9bWUoKSxhPWhlKCksbz1QKCkscz1yKFtdLmNvbmNhdCk7dC5leHBvcnRzPW4oYFJlZmxlY3RgLGBvd25LZXlzYCl8fGZ1bmN0aW9uKGUpe3ZhciB0PWkuZihvKGUpKSxuPWEuZjtyZXR1cm4gbj9zKHQsbihlKSk6dH19KSksZ2U9ZSgoKGUsdCk9Pnt2YXIgbj1PKCkscj1LKCksaT1OKCksYT1GKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIHM9cih0KSxjPWEuZixsPWkuZix1PTA7dTxzLmxlbmd0aDt1Kyspe3ZhciBkPXNbdV07IW4oZSxkKSYmIShvJiZuKG8sZCkpJiZjKGUsZCxsKHQsZCkpfX19KSksX2U9ZSgoKGUsdCk9Pnt2YXIgcj1uKCksaT1tKCksYT0vI3xcLnByb3RvdHlwZVwuLyxvPWZ1bmN0aW9uKGUsdCl7dmFyIG49Y1tzKGUpXTtyZXR1cm4gbj09PXU/ITA6bj09PWw/ITE6aSh0KT9yKHQpOiEhdH0scz1vLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoYSxgLmApLnRvTG93ZXJDYXNlKCl9LGM9by5kYXRhPXt9LGw9by5OQVRJVkU9YE5gLHU9by5QT0xZRklMTD1gUGA7dC5leHBvcnRzPW99KSksdmU9ZSgoKGUsbik9Pnt2YXIgcj10KCksaT1OKCkuZixhPUkoKSxvPUgoKSxzPVQoKSxjPWdlKCksbD1fZSgpO24uZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudGFyZ2V0LHU9ZS5nbG9iYWwsZD1lLnN0YXQsZixwPXU/cjpkP3Jbbl18fHMobix7fSk6cltuXSYmcltuXS5wcm90b3R5cGUsbSxoLGcsXztpZihwKWZvcihtIGluIHQpe2lmKGc9dFttXSxlLmRvbnRDYWxsR2V0U2V0PyhfPWkocCxtKSxoPV8mJl8udmFsdWUpOmg9cFttXSxmPWwodT9tOm4rKGQ/YC5gOmAjYCkrbSxlLmZvcmNlZCksIWYmJmghPT12b2lkIDApe2lmKHR5cGVvZiBnPT10eXBlb2YgaCljb250aW51ZTtjKGcsaCl9KGUuc2hhbXx8aCYmaC5zaGFtKSYmYShnLGBzaGFtYCwhMCksbyhwLG0sZyxlKX19fSkpLHllPWUoKChlLHQpPT57dmFyIG49cigpLGk9RigpLGE9cygpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7bj9pLmYoZSx0LGEoMCxyKSk6ZVt0XT1yfX0pKSxiZT1lKCgoKT0+e3ZhciBlPXZlKCksdD1yKCksbj1LKCksaT1wKCksYT1OKCksbz15ZSgpO2Uoe3RhcmdldDpgT2JqZWN0YCxzdGF0OiEwLHNoYW06IXR9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1pKGUpLHI9YS5mLHM9bih0KSxjPXt9LGw9MCx1LGQ7cy5sZW5ndGg+bDspZD1yKHQsdT1zW2wrK10pLGQhPT12b2lkIDAmJm8oYyx1LGQpO3JldHVybiBjfX0pfSkpLHhlPWUoKChlLG4pPT57bi5leHBvcnRzPXQoKX0pKTtlKCgoZSx0KT0+e2JlKCksdC5leHBvcnRzPXhlKCkuT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnN9KSkoKTtsZXQgU2U9bmV3IGNsYXNze2luZm8oZSx0LC4uLm4pe3RoaXMuY2FsbChjb25zb2xlLmluZm8sZSx0LC4uLm4pfXdhcm4oZSx0LC4uLm4pe3RoaXMuY2FsbChjb25zb2xlLndhcm4sZSx0LC4uLm4pfWVycm9yKGUsdCwuLi5uKXt0aGlzLmNhbGwoY29uc29sZS5lcnJvcixlLHQsLi4ubiksdGhpcy5zZW5kRXJyb3JMb2dUb0NvbW1hbmRRdWV1ZShlLHQsLi4ubil9ZXZlbnQoZSx0LC4uLm4pe3ZhciByOygocj13aW5kb3cuYWR0aHJpdmVDTFMpPT1udWxsP3ZvaWQgMDpyLmJ1Y2tldCk9PT1gZGVidWdgJiZ0aGlzLmluZm8oZSx0KX1zZW5kRXJyb3JMb2dUb0NvbW1hbmRRdWV1ZShlLHQsLi4ubil7d2luZG93LmFkdGhyaXZlPXdpbmRvdy5hZHRocml2ZXx8e30sd2luZG93LmFkdGhyaXZlLmNtZD13aW5kb3cuYWR0aHJpdmUuY21kfHxbXSx3aW5kb3cuYWR0aHJpdmUuY21kLnB1c2goKCk9Pnt3aW5kb3cuYWR0aHJpdmUubG9nRXJyb3IhPT12b2lkIDAmJnR5cGVvZiB3aW5kb3cuYWR0aHJpdmUubG9nRXJyb3I9PWBmdW5jdGlvbmAmJndpbmRvdy5hZHRocml2ZS5sb2dFcnJvcihlLHQsbil9KX1jYWxsKGUsdCxuLC4uLnIpe2xldCBpPVtgJWMke3R9Ojoke259IGBdLGE9W2Bjb2xvcjogIzk5OTsgZm9udC13ZWlnaHQ6IGJvbGQ7YF07ci5sZW5ndGg+MCYmdHlwZW9mIHJbMF09PWBzdHJpbmdgJiZpLnB1c2goci5zaGlmdCgpKSxhLnB1c2goLi4ucik7dHJ5e0Z1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGUsY29uc29sZSxbaS5qb2luKGBgKSwuLi5hXSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKTtyZXR1cm59fX07ZnVuY3Rpb24gcShlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBxPXR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PWBzeW1ib2xgP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP2BzeW1ib2xgOnR5cGVvZiBlfSxxKGUpfWZ1bmN0aW9uIENlKGUsdCl7aWYocShlKSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKHEocikhPWBvYmplY3RgKXJldHVybiByO3Rocm93IFR5cGVFcnJvcihgQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5gKX1yZXR1cm4odD09PWBzdHJpbmdgP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIHdlKGUpe3ZhciB0PUNlKGUsYHN0cmluZ2ApO3JldHVybiBxKHQpPT1gc3ltYm9sYD90OnQrYGB9ZnVuY3Rpb24gSihlLHQsbil7cmV0dXJuKHQ9d2UodCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIFRlPWNsYXNze2NvbnN0cnVjdG9yKCl7Sih0aGlzLGBuYW1lYCx2b2lkIDApLEoodGhpcyxgZGlzYWJsZWAsdm9pZCAwKSxKKHRoaXMsYGdkcHJQdXJwb3Nlc2Asdm9pZCAwKX19O2Z1bmN0aW9uIFkoZSx0KXt2YXIgbj1PYmplY3Qua2V5cyhlKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGUpO3QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsdCkuZW51bWVyYWJsZX0pKSxuLnB1c2guYXBwbHkobixyKX1yZXR1cm4gbn1mdW5jdGlvbiBYKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XT09bnVsbD97fTphcmd1bWVudHNbdF07dCUyP1koT2JqZWN0KG4pLCEwKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe0ooZSx0LG5bdF0pfSk6T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnM/T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZSxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyhuKSk6WShPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9bGV0IEVlPVtgbWNtcGZyZXFyZWNgXSxaPW5ldyBjbGFzcyBleHRlbmRzIFRle2NvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLEoodGhpcyxgbmFtZWAsYEJyb3dzZXJTdG9yYWdlYCksSih0aGlzLGBkaXNhYmxlYCwhMSksSih0aGlzLGBnZHByUHVycG9zZXNgLFsxXSksSih0aGlzLGBfc2Vzc2lvblN0b3JhZ2VIYW5kbGVyUXVldWVgLFtdKSxKKHRoaXMsYF9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWVgLFtdKSxKKHRoaXMsYF9jb29raWVIYW5kbGVyUXVldWVgLFtdKSxKKHRoaXMsYF9nZHByYCx2b2lkIDApLEoodGhpcyxgX3Nob3VsZFF1ZXVlYCwhMSl9aW5pdChlKXt0aGlzLl9nZHByPWUuZ2Rwcj09PWB0cnVlYCx0aGlzLl9zaG91bGRRdWV1ZT10aGlzLl9nZHByfWNsZWFyUXVldWUoZSl7dGhpcy5fZ2RwciYmdGhpcy5faGFzU3RvcmFnZUNvbnNlbnQoKT09PSExfHwoZSYmKHRoaXMuX3Nob3VsZFF1ZXVlPSExLHRoaXMuX3Nlc3Npb25TdG9yYWdlSGFuZGxlclF1ZXVlLmZvckVhY2goZT0+e3RoaXMuc2V0U2Vzc2lvblN0b3JhZ2UoZS5rZXksZS52YWx1ZSl9KSx0aGlzLl9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWUuZm9yRWFjaChlPT57aWYoZS5rZXk9PT1gYWR0aHJpdmVfYWJncm91cGApe2xldCB0PU9iamVjdC5rZXlzKGUudmFsdWUpWzBdLG49ZS52YWx1ZVt0XSxyPWUudmFsdWVbYCR7dH1fd2VpZ2h0YF07dGhpcy5nZXRPclNldEFCR3JvdXBMb2NhbFN0b3JhZ2VWYWx1ZSh0LG4scix7dmFsdWU6MjQsdW5pdDpgaG91cnNgfSl9ZWxzZSBlLmV4cGlyeT9lLnR5cGU9PT1gaW50ZXJuYWxgP3RoaXMuc2V0RXhwaXJhYmxlSW50ZXJuYWxMb2NhbFN0b3JhZ2UoZS5rZXksZS52YWx1ZSx7ZXhwaXJ5OmUuZXhwaXJ5LHJlc2V0T25SZWFkOmUucmVzZXRPblJlYWR9KTp0aGlzLnNldEV4cGlyYWJsZUV4dGVybmFsTG9jYWxTdG9yYWdlKGUua2V5LGUudmFsdWUse2V4cGlyeTplLmV4cGlyeSxyZXNldE9uUmVhZDplLnJlc2V0T25SZWFkfSk6ZS50eXBlPT09YGludGVybmFsYD90aGlzLnNldEludGVybmFsTG9jYWxTdG9yYWdlKGUua2V5LGUudmFsdWUpOnRoaXMuc2V0RXh0ZXJuYWxMb2NhbFN0b3JhZ2UoZS5rZXksZS52YWx1ZSl9KSx0aGlzLl9jb29raWVIYW5kbGVyUXVldWUuZm9yRWFjaChlPT57ZS50eXBlPT09YGludGVybmFsYD90aGlzLnNldEludGVybmFsQ29va2llKGUua2V5LGUudmFsdWUpOnRoaXMuc2V0RXh0ZXJuYWxDb29raWUoZS5rZXksZS52YWx1ZSl9KSksdGhpcy5fc2Vzc2lvblN0b3JhZ2VIYW5kbGVyUXVldWU9W10sdGhpcy5fbG9jYWxTdG9yYWdlSGFuZGxlclF1ZXVlPVtdLHRoaXMuX2Nvb2tpZUhhbmRsZXJRdWV1ZT1bXSl9cmVhZEludGVybmFsQ29va2llKGUpe3JldHVybiB0aGlzLl92ZXJpZnlJbnRlcm5hbEtleShlKSx0aGlzLl9yZWFkQ29va2llKGUpfXJlYWRFeHRlcm5hbENvb2tpZShlKXtyZXR1cm4gdGhpcy5fcmVhZENvb2tpZShlKX1yZWFkRXh0ZXJuYWxDb29raWVMaXN0KGUpe3JldHVybiB0aGlzLl9yZWFkQ29va2llTGlzdChlKX1nZXRBbGxDb29raWVzKCl7cmV0dXJuIHRoaXMuX2dldENvb2tpZXMoKX1yZWFkSW50ZXJuYWxMb2NhbFN0b3JhZ2UoZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeUludGVybmFsS2V5KGUpLHRoaXMuX3JlYWRGcm9tTG9jYWxTdG9yYWdlKGUpfXJlYWRFeHRlcm5hbExvY2FsU3RvcmFnZShlKXtyZXR1cm4gdGhpcy5fcmVhZEZyb21Mb2NhbFN0b3JhZ2UoZSl9cmVhZFNlc3Npb25TdG9yYWdlKGUpe2xldCB0PXdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGUpO2lmKCF0KXJldHVybiBudWxsO3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChlKXtyZXR1cm4gdH19ZGVsZXRlQ29va2llKGUpe2RvY3VtZW50LmNvb2tpZT1gJHtlfT07IFNhbWVTaXRlPU5vbmU7IFNlY3VyZTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIFVUQzsgcGF0aD0vYH1kZWxldGVMb2NhbFN0b3JhZ2UoZSl7d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpfWRlbGV0ZVNlc3Npb25TdG9yYWdlKGUpe3dpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGUpfV9oYXNTdG9yYWdlQ29uc2VudCgpe2lmKHR5cGVvZiB3aW5kb3cuX19jbXA9PWBmdW5jdGlvbmApdHJ5e2xldCBlPXdpbmRvdy5fX2NtcChgZ2V0Q01QRGF0YWApO2lmKCFlfHwhZS5wdXJwb3NlQ29uc2VudHMpcmV0dXJuO2xldCB0PWUucHVycG9zZUNvbnNlbnRzWzFdO3JldHVybiB0PT09ITA/ITA6dD09PSExfHx0PT1udWxsPyExOnZvaWQgMH1jYXRjaChlKXtyZXR1cm59fXNldEludGVybmFsQ29va2llKGUsdCxuKXt0aGlzLmRpc2FibGV8fCh0aGlzLl92ZXJpZnlJbnRlcm5hbEtleShlKSx0aGlzLl9zZXRDb29raWVWYWx1ZShgaW50ZXJuYWxgLGUsdCxuKSl9c2V0RXh0ZXJuYWxDb29raWUoZSx0LG4pe3RoaXMuZGlzYWJsZXx8dGhpcy5fc2V0Q29va2llVmFsdWUoYGV4dGVybmFsYCxlLHQsbil9c2V0SW50ZXJuYWxMb2NhbFN0b3JhZ2UoZSx0KXtpZighdGhpcy5kaXNhYmxlKWlmKHRoaXMuX3ZlcmlmeUludGVybmFsS2V5KGUpLHRoaXMuX2dkcHImJnRoaXMuX3Nob3VsZFF1ZXVlKXtsZXQgbj17a2V5OmUsdmFsdWU6dCx0eXBlOmBpbnRlcm5hbGB9O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49dHlwZW9mIHQ9PWBzdHJpbmdgP3Q6SlNPTi5zdHJpbmdpZnkodCk7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGUsbil9fXNldEV4dGVybmFsTG9jYWxTdG9yYWdlKGUsdCl7aWYoIXRoaXMuZGlzYWJsZSlpZih0aGlzLl9nZHByJiZ0aGlzLl9zaG91bGRRdWV1ZSl7bGV0IG49e2tleTplLHZhbHVlOnQsdHlwZTpgZXh0ZXJuYWxgfTt0aGlzLl9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWUucHVzaChuKX1lbHNle2xldCBuPXR5cGVvZiB0PT1gc3RyaW5nYD90OkpTT04uc3RyaW5naWZ5KHQpO3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLG4pfX1zZXRFeHBpcmFibGVJbnRlcm5hbExvY2FsU3RvcmFnZShlLHQsbil7aWYoIXRoaXMuZGlzYWJsZSl7dGhpcy5fdmVyaWZ5SW50ZXJuYWxLZXkoZSk7dHJ5e3ZhciByLGk7bGV0IGE9KHI9bj09bnVsbD92b2lkIDA6bi5leHBpcnkpPT1udWxsP3t2YWx1ZTo0MDAsdW5pdDpgZGF5c2B9OnIsbz0oaT1uPT1udWxsP3ZvaWQgMDpuLnJlc2V0T25SZWFkKT09bnVsbD8hMTppO2lmKHRoaXMuX2dkcHImJnRoaXMuX3Nob3VsZFF1ZXVlKXtsZXQgbj17a2V5OmUsdmFsdWU6dCx0eXBlOmBpbnRlcm5hbGAsZXhwaXJlczp0aGlzLl9nZXRFeHBpcnlEYXRlKGEpLGV4cGlyeTphLHJlc2V0T25SZWFkOm99O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49e3ZhbHVlOnQsdHlwZTpgaW50ZXJuYWxgLGV4cGlyZXM6dGhpcy5fZ2V0RXhwaXJ5RGF0ZShhKSxleHBpcnk6YSxyZXNldE9uUmVhZDpvfTt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShuKSl9fWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fX1zZXRFeHBpcmFibGVFeHRlcm5hbExvY2FsU3RvcmFnZShlLHQsbil7aWYoIXRoaXMuZGlzYWJsZSl0cnl7dmFyIHIsaTtsZXQgYT0ocj1uPT1udWxsP3ZvaWQgMDpuLmV4cGlyeSk9PW51bGw/e3ZhbHVlOjQwMCx1bml0OmBkYXlzYH06cixvPShpPW49PW51bGw/dm9pZCAwOm4ucmVzZXRPblJlYWQpPT1udWxsPyExOmk7aWYodGhpcy5fZ2RwciYmdGhpcy5fc2hvdWxkUXVldWUpe2xldCBuPXtrZXk6ZSx2YWx1ZTpKU09OLnN0cmluZ2lmeSh0KSx0eXBlOmBleHRlcm5hbGAsZXhwaXJlczp0aGlzLl9nZXRFeHBpcnlEYXRlKGEpLGV4cGlyeTphLHJlc2V0T25SZWFkOm99O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49e3ZhbHVlOnQsdHlwZTpgZXh0ZXJuYWxgLGV4cGlyZXM6dGhpcy5fZ2V0RXhwaXJ5RGF0ZShhKSxleHBpcnk6YSxyZXNldE9uUmVhZDpvfTt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShuKSl9fWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fXNldFNlc3Npb25TdG9yYWdlKGUsdCl7aWYoIXRoaXMuZGlzYWJsZSlpZih0aGlzLl9nZHByJiZ0aGlzLl9zaG91bGRRdWV1ZSl7bGV0IG49e2tleTplLHZhbHVlOnR9O3RoaXMuX3Nlc3Npb25TdG9yYWdlSGFuZGxlclF1ZXVlLnB1c2gobil9ZWxzZXtsZXQgbj10eXBlb2YgdD09YHN0cmluZ2A/dDpKU09OLnN0cmluZ2lmeSh0KTt3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShlLG4pfX1nZXRPclNldEFCR3JvdXBMb2NhbFN0b3JhZ2VWYWx1ZShlLHQsbixyLGk9ITApe2xldCBhPWBhZHRocml2ZV9hYmdyb3VwYCxvPXRoaXMucmVhZEludGVybmFsTG9jYWxTdG9yYWdlKGEpO2lmKG8hPT1udWxsKXt2YXIgcztsZXQgdD1vW2VdLG49KHM9b1tgJHtlfV93ZWlnaHRgXSk9PW51bGw/bnVsbDpzO2lmKHRoaXMuX2lzVmFsaWRBQkdyb3VwTG9jYWxTdG9yYWdlVmFsdWUodCkpcmV0dXJuW3Qsbl19bGV0IGM9WChYKHt9LG8pLHt9LHtbZV06dCxbYCR7ZX1fd2VpZ2h0YF06bn0pO3JldHVybiByP3RoaXMuc2V0RXhwaXJhYmxlSW50ZXJuYWxMb2NhbFN0b3JhZ2UoYSxjLHtleHBpcnk6cixyZXNldE9uUmVhZDppfSk6dGhpcy5zZXRJbnRlcm5hbExvY2FsU3RvcmFnZShhLGMpLFt0LG5dfV9pc1ZhbGlkQUJHcm91cExvY2FsU3RvcmFnZVZhbHVlKGUpe3JldHVybiBlIT1udWxsJiYhKHR5cGVvZiBlPT1gbnVtYmVyYCYmaXNOYU4oZSkpfV9nZXRFeHBpcnlEYXRlKHt2YWx1ZTplLHVuaXQ6dH0pe2xldCBuPW5ldyBEYXRlO3JldHVybiB0PT09YG1pbGxpc2Vjb25kc2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UpOnQ9PWBzZWNvbmRzYD9uLnNldFRpbWUobi5nZXRUaW1lKCkrZSoxZTMpOnQ9PT1gbWludXRlc2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UqNjAqMWUzKTp0PT09YGhvdXJzYD9uLnNldFRpbWUobi5nZXRUaW1lKCkrZSo2MCo2MCoxZTMpOnQ9PT1gZGF5c2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UqMjQqNjAqNjAqMWUzKTp0PT09YG1vbnRoc2AmJm4uc2V0VGltZShuLmdldFRpbWUoKStlKjMwKjI0KjYwKjYwKjFlMyksbi50b1VUQ1N0cmluZygpfV9yZXNldEV4cGlyeShlKXtyZXR1cm4gZS5leHBpcmVzPXRoaXMuX2dldEV4cGlyeURhdGUoZS5leHBpcnkpLGV9X3JlYWRDb29raWUoZSl7bGV0IHQ9ZG9jdW1lbnQuY29va2llLnNwbGl0KGA7IGApLmZpbmQodD0+dC5zcGxpdChgPWApWzBdPT09ZSk7aWYoIXQpcmV0dXJuIG51bGw7bGV0IG49dC5zcGxpdChgPWApWzFdO2lmKG4pdHJ5e3JldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChuKSl9Y2F0Y2goZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChuKX1yZXR1cm4gbnVsbH1fcmVhZENvb2tpZUxpc3QoZSl7bGV0IHQ7Zm9yKGxldCBuIG9mIGRvY3VtZW50LmNvb2tpZS5zcGxpdChgO2ApKXtsZXRbciwuLi5pXT1uLnNwbGl0KGA9YCk7ci50cmltKCk9PT1lJiYodD1pLmpvaW4oYD1gKS50cmltKCkpfXJldHVybiB0JiZKU09OLnBhcnNlKHQpfHxbXX1fZ2V0Q29va2llcygpe2xldCBlPVtdO3JldHVybiBkb2N1bWVudC5jb29raWUuc3BsaXQoYDtgKS5mb3JFYWNoKHQ9PntsZXRbbixyXT10LnNwbGl0KGA9YCkubWFwKGU9PmUudHJpbSgpKTtlLnB1c2goe25hbWU6bix2YWx1ZTpyfSl9KSxlfV9yZWFkRnJvbUxvY2FsU3RvcmFnZShlKXtsZXQgdD13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZSk7aWYoIXQpcmV0dXJuIG51bGw7dHJ5e2xldCByPUpTT04ucGFyc2UodCksaT1yLmV4cGlyZXMmJm5ldyBEYXRlKCkuZ2V0VGltZSgpPj1uZXcgRGF0ZShyLmV4cGlyZXMpLmdldFRpbWUoKTtpZihlPT09YGFkdGhyaXZlX2FiZ3JvdXBgJiZyLmNyZWF0ZWQpcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShlKSxudWxsO2lmKHIucmVzZXRPblJlYWQmJnIuZXhwaXJlcyYmIWkpe3ZhciBuO2xldCB0PXRoaXMuX3Jlc2V0RXhwaXJ5KHIpO3JldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShyKSksKG49dC52YWx1ZSk9PW51bGw/dDpufWVsc2UgaWYoaSlyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpLG51bGw7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsYHZhbHVlYCkpdHJ5e3JldHVybiBKU09OLnBhcnNlKHIudmFsdWUpfWNhdGNoKGUpe3JldHVybiByLnZhbHVlfWVsc2UgcmV0dXJuIHJ9Y2F0Y2goZSl7cmV0dXJuIHR9fV9zZXRDb29raWVWYWx1ZShlLHQsbixyKXt0cnl7aWYodGhpcy5fZ2RwciYmdGhpcy5fc2hvdWxkUXVldWUpe2xldCByPXtrZXk6dCx2YWx1ZTpuLHR5cGU6ZX07dGhpcy5fY29va2llSGFuZGxlclF1ZXVlLnB1c2gocil9ZWxzZXt2YXIgaSxhLG87bGV0IGU9dGhpcy5fZ2V0RXhwaXJ5RGF0ZSgoaT1yPT1udWxsP3ZvaWQgMDpyLmV4cGlyeSk9PW51bGw/e3ZhbHVlOjQwMCx1bml0OmBkYXlzYH06aSkscz0oYT1yPT1udWxsP3ZvaWQgMDpyLnNhbWVTaXRlKT09bnVsbD9gTm9uZWA6YSxjPShvPXI9PW51bGw/dm9pZCAwOnIuc2VjdXJlKT09bnVsbD8hMDpvLGw9dHlwZW9mIG49PWBvYmplY3RgP0pTT04uc3RyaW5naWZ5KG4pOm47ZG9jdW1lbnQuY29va2llPWAke3R9PSR7bH07IFNhbWVTaXRlPSR7c307ICR7Yz9gU2VjdXJlO2A6YGB9IGV4cGlyZXM9JHtlfTsgcGF0aD0vYH19Y2F0Y2goZSl7fX1fdmVyaWZ5SW50ZXJuYWxLZXkoZSl7bGV0IHQ9ZS5zdGFydHNXaXRoKGBhZHRocml2ZV9gKSxuPWUuc3RhcnRzV2l0aChgYWR0X2ApO2lmKCF0JiYhbiYmIUVlLmluY2x1ZGVzKGUpKXRocm93IEVycm9yKGBXaGVuIHJlYWRpbmcgYW4gaW50ZXJuYWwgY29va2llLCB0aGUga2V5IG11c3Qgc3RhcnQgd2l0aCAiYWR0aHJpdmVfIiBvciAiYWR0XyIgb3IgYmUgcGFydCBvZiB0aGUgYWxsb3dlZCBsZWdhY3kga2V5cy5gKX19LERlPShlLHQpPT57bGV0IG49ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYHNjcmlwdGApWzBdO24mJm4ucGFyZW50Tm9kZSYmIXQ/bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pOmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSl9LE9lPShlLHQ9ITEsbj0hMSxyPSExKT0+bmV3IFByb21pc2UoKGksYSk9PntsZXQgbz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGBzY3JpcHRgKTtvLmFkZEV2ZW50TGlzdGVuZXIoYGVycm9yYCwoKT0+YShFcnJvcihgRmFpbGVkIHRvIGltcG9ydCBzY3JpcHQgJHtlfWApKSksby5hZGRFdmVudExpc3RlbmVyKGBsb2FkYCwoKT0+aShvKSksby50eXBlPWB0ZXh0L2phdmFzY3JpcHRgLG8uc3JjPWUsby5kZWZlcj1uLG8uYXN5bmM9cixEZShvLHQpfSksUT0oKT0+KHt3aWR0aDpNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGh8fDAsd2luZG93LmlubmVyV2lkdGh8fDApLGhlaWdodDpNYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0fHwwLHdpbmRvdy5pbm5lckhlaWdodHx8MCl9KSxrZT1lPT57bGV0IHQ9e307cmV0dXJuIGZ1bmN0aW9uKC4uLm4pe2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2lmKHIgaW4gdClyZXR1cm4gdFtyXTtsZXQgaT1lLmFwcGx5KHRoaXMsbik7cmV0dXJuIHRbcl09aSxpfX0sQWU9YF5Nb3ppbGxhLzVcXC4wJCxBNi1JbmRleGVyLGFkZHRoaXMsYWRtYW50eCxhZ2VudHNsdWcsYWxleGEsYW5kZXJzcGluayxhcGFjaGUtaHR0cGNsaWVudCxhcGFjaGViZW5jaCxhcGlzLWdvb2dsZSxhcGlzLGFwcGVuZ2luZS1nb29nbGUsYXNrIGplZXZlcyxhc3luY2h0dHBjbGllbnQsYXdlXFwuc20sYmFpZHUsYmFya3Jvd2xlcixiaWdsb3Ryb24sYmluZ3ByZXZpZXcsYm90LGJyYW5kdmVyaWZ5LGJ1YmluZyxidXR0ZXJmbHksYnV6enRhbGssY2YtdWMsY2hhdGdwdCxjaGVja19odHRwLGNsb3VkZmxhcmUsY21yYWRhci8wXFwuMSxjb2xkZnVzaW9uLGNvbW9kbyBzc2wgY2hlY2tlcixjb252ZXJhLGNvcHlwYW50cyxjcmF3bGVyLGNyb3dzbmVzdCxjdXJsLGRhcC9uZXRodHRwLGRhdW1vYSxkZWVwc2VlayxkZWVwc2Vla2JvdCxkZXZlbG9wZXJzXFwuZ29vZ2xlXFwuY29tLysvd2ViL3NuaXBwZXQvLGRpZ2l0YWxwZXJzb25hIGZpbmdlcnByaW50IHNvZnR3YXJlLGRydXBhY3QsZHVja2R1Y2ssZWxiLWhlYWx0aGNoZWNrZXIsZW1iZWRseSxlb2FhZ2VudCxldXJvcGFyY2hpdmUsZXZlbnRtYWNoaW5lIGh0dHBjbGllbnQsZXZyaW5pZCxleGFsZWFkY2xvdWR2aWV3LGV6IHB1Ymxpc2gsZXpvb21zLGZhY2Vib29rZXh0ZXJuYWxoaXQsZmVlZGJ1cm5lcixmZWVkZmV0Y2hlci1nb29nbGUsZmluZGxpbmssZmluZHRoYXRmaWxlLGZsaXBib2FyZHByb3h5LGdhcmxpayxnZW5pZW8sZ2V0cHJpc21hdGljXFwuY29tLGdob3N0LGdpZ2FibGFzdCxnbyBodHRwIHBhY2thZ2UsZ29vZ2xlKCBwYWdlIHNwZWVkIGluc2lnaHRzfCB3ZWIgcHJldmlld3xnb29nbGUtc2l0ZS12ZXJpZmljYXRpb258LXN0cnVjdHVyZWQtZGF0YS10ZXN0aW5nLXRvb2x8LXN0cnVjdHVyZWRkYXRhdGVzdGluZ3Rvb2wpLGdvb2dsZXdlYmxpZ2h0LGdwdCxncHRib3QsaGF0ZW5hLGhlYWRsZXNzLGhlcml0cml4LGh0bWxwYXJzZXIsaHR0cChfcmVxdWVzdDJ8Y2xpZW50fHN8dW5pdCksaHR0cmFjayxodWJzcG90LGlhX2FyY2hpdmVyLGljaGlybyxpY29yZXNlcnZpY2UsaWRtYXJjaCxpbihhZ2lzdHxzaWV2ZXxzdGFwYXBlciksaW5zaWdodHMsaXBzLWFnZW50LGphY2ssamFrYXJ0YSBjb21tb25zLGphdmEsamV0c2xpZGUsam9ic2Vla2VyLGpzLWtpdCxraW1lbmdpLGtub3dzXFwuaXMsa3Jha2VuLGxhY29uaWNhLGxpYnd3dyxsaWdodGhvdXNlLGxpbm9kZSxsaXBwZXJoZXksbG9uZ3VybCxsdHg3MSxsd3AtdHJpdmlhbCxtYXBweWRhdGEsbWFzdG9kb24sbWVkaWFwYXJ0bmVycy1nb29nbGUsbWVnYWluZGV4XFwucnUsbWV0YXVyaSxtZmVfZXhwYW5kLG1peG5vZGUsbW9uKHRhc3RpY3x0b29scyksbW9uaXRvcixtb3Jlb3ZlcixtcmNocm9tZSxuYmVydGEsbmV0KGNyYWZ0fHJlc2VhcmNoc2VydmVyfHN0YXRlfHZpYmVzKSxuZXdyZWxpY3BpbmdlcixuZXdzbWUsbmV3c3BhcGVyLG5pZ2h0bWFyZSxuaW5nLG5tYXAsbnV0Y2gsb25saW5lLWRvbWFpbi10b29scyxvcGVuYWkscGFlc3NsZXIscGFnZShwZWVrfHNpbnZlbnRvcnl8dGhpbmcpLHBhbm9wdGEscGVlcmluZGV4LHBoYW50b21qcyxwaW5nZG9tLHBsdWtraWUscHJveGltaWMscHVfaW4scHVibGljbGlicmFyeWFyY2hpdmVcXC5vcmcscHl0aG9uLShodHRwbGliMnxyZXF1ZXN0c3x1cmxsaWIpLHB5dGhvbixxdWFudGkscXVlcnlzZWVrZXIscXVpY2tsb29rLHF3YW50aSxyZS1hbmltYXRvcixyZWFkYWJpbGl0eSxyZWJlbG1vdXNlLHJlbGF0ZWlxLHJpZGRsZXIscnNzbWljcm8scnVieSxzY3JhcGVyLHNjcmFweSxzZW8tYXVkaXQsc2VvZGl2ZXIsc2Vva2lja3Msc2hvcHdpa2ksc2hvcnRsaW5rdHJhbnNsYXRlLHNpZWdlLHNpbmNlcmEsc2lzdHJpeCxzaXRlMjR4NyxzaXRlZXhwbG9yZXIsc2t5cGV1cmlwcmV2aWV3LHNsYWNrLHNsdXJwLHNvY2lhbHJhbmssc29nb3Usc3BpZGVyLHNwaW5uM3Isc3F1aWRlcixzdGF0dXNjYWtlLHN0cmlwZSxzdW1taWZ5LHRlZXJhaWQsdGVvbWEsdGVzdCBjZXJ0aWZpY2F0ZSBpbmZvLHRpbmV5ZSx0cmFhY2tyLHR0ZC1jb250ZW50LHR3ZWV0ZWR0aW1lcyx0d2lrbGUsdHdpdGpvYnNlYXJjaCx0d2l0bXVuaW4sdHd1cmx5LHR5cGhvZXVzLHVud2luZGZldGNoLHVwdGltKGV8aWEpLHVwdG1cXC5pbyx2YWdhYm9uZG8sdmIgcHJvamVjdCx2aWdpbCxWaXYvMix2a3NoYXJlLHdhcHBhbHl6ZXIsd2F0Y2hzdW1vLHdlYmNlbyx3ZWJkYXRhc2NvdXQsd2VibW9uLHdlYnNjb3V0LHdlc2VlLHdnZXQsd2hhdHNhcHAsd2hhdHdlYix3aWtpZG8sd29yZHByZXNzLHdvcm1seSx3b3Rib3gseGVudSBsaW5rIHNsZXV0aCx4aW5nLWNvbnRlbnR0YWJyZWNlaXZlcix5YW5kZXgseWFuZ2EseWV0aSx5ZmYzNSx5b3VybHMsemVsaXN0XFwucm8semliYmAuc3BsaXQoYCxgKSxqZT1rZSgoZT1BZSk9PntsZXQgdD1uZXcgUmVnRXhwKGUuam9pbihgfGApLGBpYCksbj13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO3JldHVybiB0LnRlc3Qobil9KTt2YXIgTWU9Y2xhc3N7Y29uc3RydWN0b3IoKXtKKHRoaXMsYHJ1blRlc3RzYCwoKT0+e2xldCBlPSExO3JldHVybiB3aW5kb3cmJmRvY3VtZW50JiYoZT1bYHdlYmRyaXZlcmBpbiB3aW5kb3csYF9TZWxlbml1bV9JREVfUmVjb3JkZXJgaW4gd2luZG93LGBjYWxsU2VsZW5pdW1gaW4gd2luZG93LGBfc2VsZW5pdW1gaW4gd2luZG93LGBfX3dlYmRyaXZlcl9zY3JpcHRfZm5gaW4gZG9jdW1lbnQsYF9fZHJpdmVyX2V2YWx1YXRlYGluIGRvY3VtZW50LGBfX3dlYmRyaXZlcl9ldmFsdWF0ZWBpbiBkb2N1bWVudCxgX19zZWxlbml1bV9ldmFsdWF0ZWBpbiBkb2N1bWVudCxgX19meGRyaXZlcl9ldmFsdWF0ZWBpbiBkb2N1bWVudCxgX19kcml2ZXJfdW53cmFwcGVkYGluIGRvY3VtZW50LGBfX3dlYmRyaXZlcl91bndyYXBwZWRgaW4gZG9jdW1lbnQsYF9fc2VsZW5pdW1fdW53cmFwcGVkYGluIGRvY3VtZW50LGBfX2Z4ZHJpdmVyX3Vud3JhcHBlZGBpbiBkb2N1bWVudCxgX193ZWJkcml2ZXJfc2NyaXB0X2Z1bmNgaW4gZG9jdW1lbnQsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShgc2VsZW5pdW1gKSE9PW51bGwsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEF0dHJpYnV0ZShgd2ViZHJpdmVyYCkhPT1udWxsLGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUoYGRyaXZlcmApIT09bnVsbF0uc29tZShlPT5lKSksZX0pfWlzU2VsZW5pdW0oKXtyZXR1cm4gdGhpcy5ydW5UZXN0cygpfX07bGV0IE5lPSgpPT57aWYobmF2aWdhdG9yJiZuYXZpZ2F0b3IudXNlckFnZW50JiZqZSgpKXJldHVybmB1YXZgfSxQZT0oKT0+e2xldCBlPVEoKTtpZihlLndpZHRoPjVlM3x8ZS5oZWlnaHQ+NWUzKXJldHVybmB2cHZgfSxGZT0oKT0+e2lmKG5ldyBNZSgpLmlzU2VsZW5pdW0oKSlyZXR1cm5gc2VsZW5pdW1gfSxJZT0oKT0+e2xldCBlPVtQZSgpLE5lKCksRmUoKV0uZmlsdGVyKGU9PiEhZSk7cmV0dXJuIGUubGVuZ3RoP2U6dm9pZCAwfSwkPSgpPT5aLnJlYWRFeHRlcm5hbENvb2tpZShgdXNwcml2YWN5YCk9PT1gMVlZWWA7SWUoKXx8JCgpfHwoKCk9Pnt0cnl7dmFyIGU7cmV0dXJuKChlPXdpbmRvdy5hZHRocml2ZUNMUyk9PW51bGx8fChlPWUuc2l0ZUFkcyk9PW51bGx8fChlPWUuYWRPcHRpb25zKT09bnVsbHx8KGU9ZS51c0NtcENsaWNrV3JhcCk9PW51bGw/dm9pZCAwOmUuZW5hYmxlZCk9PT0hMH1jYXRjaChlKXtyZXR1cm4hMX19KSgpfHwoKCk9PntsZXQgZT1gdW5rbm93bmA7cmV0dXJuIHR5cGVvZiBJbnRsPGB1YCYmdHlwZW9mIEludGwuRGF0ZVRpbWVGb3JtYXQ9PWBmdW5jdGlvbmAmJnR5cGVvZiBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zPT1gZnVuY3Rpb25gJiYoZT1JbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmV8fGB1bmtub3duYCksZS5zdGFydHNXaXRoKGBBbWVyaWNhL2ApfSkoKSYmKCgpPT57bGV0IGU9YDYwMzU0NTNgLHQ9JCgpP2AwYDpgMWAsbj1YKHtjMTpgMmAsYzI6ZSxjc19mcGlkOloucmVhZEV4dGVybmFsQ29va2llKGBfcHViY2lkYCl8fFoucmVhZEV4dGVybmFsTG9jYWxTdG9yYWdlKGBfcHViY2lkYCksY3NfZnBpdDpgb2AsY3NfZnBkbTpgKm51bGxgLGNzX2ZwZHQ6YCpudWxsYCxvcHRpb25zOntlbmFibGVGaXJzdFBhcnR5Q29va2llOiEwfX0se2NzX3VjZnI6dHx8YDBgfSk7d2luZG93Ll9jb21zY29yZT13aW5kb3cuX2NvbXNjb3JlfHxbXSx3aW5kb3cuX2NvbXNjb3JlLnB1c2gobiksT2UoYGh0dHBzOi8vc2Iuc2NvcmVjYXJkcmVzZWFyY2guY29tL2NzLyR7ZX0vYmVhY29uLmpzYCkuY2F0Y2goZT0+e1NlLmVycm9yKGBDb21zY29yZVRyYWNrZXJDb21wb25lbnRgLGBpbml0YCxgRXJyb3IgZHVyaW5nIENvbXNjb3JlIGJlYWNvbi5qcyBpbXBvcnQ6IGAsZSl9KX0pKCl9KSgpOw=="></script><script data-no-optimize='1' data-cfasync='false' id='cls-disable-ads-b676c16' data-type="lazy" data-src="data:text/javascript;base64,dmFyIGNsc19kaXNhYmxlX2Fkcz0oZnVuY3Rpb24oZSl7d2luZG93LmFkdGhyaXZlQ0xTLmJ1aWxkRGF0ZT1gMjAyNi0wMi0xM2A7dmFyIHQ9KGUsdCk9PigpPT4odHx8ZSgodD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsdCksdC5leHBvcnRzKSxuPXQoKChlLHQpPT57dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09PU1hdGgmJmV9O3QuZXhwb3J0cz1uKHR5cGVvZiBnbG9iYWxUaGlzPT1gb2JqZWN0YCYmZ2xvYmFsVGhpcyl8fG4odHlwZW9mIHdpbmRvdz09YG9iamVjdGAmJndpbmRvdyl8fG4odHlwZW9mIHNlbGY9PWBvYmplY3RgJiZzZWxmKXx8bih0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsKXx8bih0eXBlb2YgZT09YG9iamVjdGAmJmUpfHwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKCl8fEZ1bmN0aW9uKGByZXR1cm4gdGhpc2ApKCl9KSkscj10KCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0pKSxpPXQoKChlLHQpPT57dC5leHBvcnRzPSFyKCkoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT09N30pfSkpLGE9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9IXIoKShmdW5jdGlvbigpe3ZhciBlPShmdW5jdGlvbigpe30pLmJpbmQoKTtyZXR1cm4gdHlwZW9mIGUhPWBmdW5jdGlvbmB8fGUuaGFzT3duUHJvcGVydHkoYHByb3RvdHlwZWApfSl9KSksbz10KCgoZSx0KT0+e3ZhciBuPWEoKSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO3QuZXhwb3J0cz1uP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19KSkscz10KChlPT57dmFyIHQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uJiYhdC5jYWxsKHsxOjJ9LDEpP2Z1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06dH0pKSxjPXQoKChlLHQpPT57dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6IShlJjEpLGNvbmZpZ3VyYWJsZTohKGUmMiksd3JpdGFibGU6IShlJjQpLHZhbHVlOnR9fX0pKSxsPXQoKChlLHQpPT57dmFyIG49YSgpLHI9RnVuY3Rpb24ucHJvdG90eXBlLGk9ci5jYWxsLG89biYmci5iaW5kLmJpbmQoaSxpKTt0LmV4cG9ydHM9bj9vOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBpLmFwcGx5KGUsYXJndW1lbnRzKX19fSkpLHU9dCgoKGUsdCk9Pnt2YXIgbj1sKCkscj1uKHt9LnRvU3RyaW5nKSxpPW4oYGAuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShyKGUpLDgsLTEpfX0pKSxkPXQoKChlLHQpPT57dmFyIG49bCgpLGk9cigpLGE9dSgpLG89T2JqZWN0LHM9bihgYC5zcGxpdCk7dC5leHBvcnRzPWkoZnVuY3Rpb24oKXtyZXR1cm4hbyhgemApLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk9PT1gU3RyaW5nYD9zKGUsYGApOm8oZSl9Om99KSksZj10KCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbH19KSkscD10KCgoZSx0KT0+e3ZhciBuPWYoKSxyPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSl0aHJvdyBuZXcgcihgQ2FuJ3QgY2FsbCBtZXRob2Qgb24gYCtlKTtyZXR1cm4gZX19KSksbT10KCgoZSx0KT0+e3ZhciBuPWQoKSxyPXAoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocihlKSl9fSkpLGg9dCgoKGUsdCk9Pnt2YXIgbj10eXBlb2YgZG9jdW1lbnQ9PWBvYmplY3RgJiZkb2N1bWVudC5hbGw7dC5leHBvcnRzPW49PT12b2lkIDAmJm4hPT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfHxlPT09bn06ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfX0pKSxnPXQoKChlLHQpPT57dmFyIG49aCgpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBvYmplY3RgP2UhPT1udWxsOm4oZSl9fSkpLF89dCgoKGUsdCk9Pnt2YXIgcj1uKCksaT1oKCksYT1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9lOnZvaWQgMH07dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9hKHJbZV0pOnJbZV0mJnJbZV1bdF19fSkpLHY9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9bCgpKHt9LmlzUHJvdG90eXBlT2YpfSkpLHk9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9dHlwZW9mIG5hdmlnYXRvcjxgdWAmJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8YGB9KSksYj10KCgoZSx0KT0+e3ZhciByPW4oKSxpPXkoKSxhPXIucHJvY2VzcyxvPXIuRGVubyxzPWEmJmEudmVyc2lvbnN8fG8mJm8udmVyc2lvbixjPXMmJnMudjgsbCx1O2MmJihsPWMuc3BsaXQoYC5gKSx1PWxbMF0+MCYmbFswXTw0PzE6KyhsWzBdK2xbMV0pKSwhdSYmaSYmKGw9aS5tYXRjaCgvRWRnZVwvKFxkKykvKSwoIWx8fGxbMV0+PTc0KSYmKGw9aS5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pLGwmJih1PStsWzFdKSkpLHQuZXhwb3J0cz11fSkpLHg9dCgoKGUsdCk9Pnt2YXIgaT1iKCksYT1yKCksbz1uKCkuU3RyaW5nO3QuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFhKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKGBzeW1ib2wgZGV0ZWN0aW9uYCk7cmV0dXJuIW8oZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmkmJmk8NDF9KX0pKSxTPXQoKChlLHQpPT57dC5leHBvcnRzPXgoKSYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYH0pKSxDPXQoKChlLHQpPT57dmFyIG49XygpLHI9aCgpLGk9digpLGE9UygpLG89T2JqZWN0O3QuZXhwb3J0cz1hP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09YHN5bWJvbGB9OmZ1bmN0aW9uKGUpe3ZhciB0PW4oYFN5bWJvbGApO3JldHVybiByKHQpJiZpKHQucHJvdG90eXBlLG8oZSkpfX0pKSx3PXQoKChlLHQpPT57dmFyIG49U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIG4oZSl9Y2F0Y2goZSl7cmV0dXJuYE9iamVjdGB9fX0pKSxlZT10KCgoZSx0KT0+e3ZhciBuPWgoKSxyPXcoKSxpPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgaShyKGUpK2AgaXMgbm90IGEgZnVuY3Rpb25gKX19KSksdGU9dCgoKGUsdCk9Pnt2YXIgbj1lZSgpLHI9ZigpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOm4oaSl9fSkpLG5lPXQoKChlLHQpPT57dmFyIG49bygpLHI9aCgpLGk9ZygpLGE9VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBvLHM7aWYodD09PWBzdHJpbmdgJiZyKG89ZS50b1N0cmluZykmJiFpKHM9bihvLGUpKXx8cihvPWUudmFsdWVPZikmJiFpKHM9bihvLGUpKXx8dCE9PWBzdHJpbmdgJiZyKG89ZS50b1N0cmluZykmJiFpKHM9bihvLGUpKSlyZXR1cm4gczt0aHJvdyBuZXcgYShgQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlYCl9fSkpLFQ9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9ITF9KSksRT10KCgoZSx0KT0+e3ZhciByPW4oKSxpPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt0cnl7aShyLGUse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSl9Y2F0Y2gobil7cltlXT10fXJldHVybiB0fX0pKSxEPXQoKChlLHQpPT57dmFyIHI9VCgpLGk9bigpLGE9RSgpLG89YF9fY29yZS1qc19zaGFyZWRfX2Ascz10LmV4cG9ydHM9aVtvXXx8YShvLHt9KTsocy52ZXJzaW9uc3x8KHMudmVyc2lvbnM9W10pKS5wdXNoKHt2ZXJzaW9uOmAzLjM2LjFgLG1vZGU6cj9gcHVyZWA6YGdsb2JhbGAsY29weXJpZ2h0OmDCqSAyMDE0LTIwMjQgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSlgLGxpY2Vuc2U6YGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2Jsb2IvdjMuMzYuMS9MSUNFTlNFYCxzb3VyY2U6YGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzYH0pfSkpLE89dCgoKGUsdCk9Pnt2YXIgbj1EKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG5bZV18fChuW2VdPXR8fHt9KX19KSkscmU9dCgoKGUsdCk9Pnt2YXIgbj1wKCkscj1PYmplY3Q7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKG4oZSkpfX0pKSxrPXQoKChlLHQpPT57dmFyIG49bCgpLHI9cmUoKSxpPW4oe30uaGFzT3duUHJvcGVydHkpO3QuZXhwb3J0cz1PYmplY3QuaGFzT3dufHxmdW5jdGlvbihlLHQpe3JldHVybiBpKHIoZSksdCl9fSkpLEE9dCgoKGUsdCk9Pnt2YXIgbj1sKCkscj0wLGk9TWF0aC5yYW5kb20oKSxhPW4oMSAudG9TdHJpbmcpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm5gU3ltYm9sKGArKGU9PT12b2lkIDA/YGA6ZSkrYClfYCthKCsrcitpLDM2KX19KSksaWU9dCgoKGUsdCk9Pnt2YXIgcj1uKCksaT1PKCksYT1rKCksbz1BKCkscz14KCksYz1TKCksbD1yLlN5bWJvbCx1PWkoYHdrc2ApLGQ9Yz9sLmZvcnx8bDpsJiZsLndpdGhvdXRTZXR0ZXJ8fG87dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBhKHUsZSl8fCh1W2VdPXMmJmEobCxlKT9sW2VdOmQoYFN5bWJvbC5gK2UpKSx1W2VdfX0pKSxqPXQoKChlLHQpPT57dmFyIG49bygpLHI9ZygpLGk9QygpLGE9dGUoKSxzPW5lKCksYz1pZSgpLGw9VHlwZUVycm9yLHU9YyhgdG9QcmltaXRpdmVgKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighcihlKXx8aShlKSlyZXR1cm4gZTt2YXIgbz1hKGUsdSksYztpZihvKXtpZih0PT09dm9pZCAwJiYodD1gZGVmYXVsdGApLGM9bihvLGUsdCksIXIoYyl8fGkoYykpcmV0dXJuIGM7dGhyb3cgbmV3IGwoYENhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZWApfXJldHVybiB0PT09dm9pZCAwJiYodD1gbnVtYmVyYCkscyhlLHQpfX0pKSxNPXQoKChlLHQpPT57dmFyIG49aigpLHI9QygpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUsYHN0cmluZ2ApO3JldHVybiByKHQpP3Q6dCtgYH19KSksYWU9dCgoKGUsdCk9Pnt2YXIgcj1uKCksaT1nKCksYT1yLmRvY3VtZW50LG89aShhKSYmaShhLmNyZWF0ZUVsZW1lbnQpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbz9hLmNyZWF0ZUVsZW1lbnQoZSk6e319fSkpLE49dCgoKGUsdCk9Pnt2YXIgbj1pKCksYT1yKCksbz1hZSgpO3QuZXhwb3J0cz0hbiYmIWEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8oYGRpdmApLGBhYCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9PTd9KX0pKSxQPXQoKGU9Pnt2YXIgdD1pKCksbj1vKCkscj1zKCksYT1jKCksbD1tKCksdT1NKCksZD1rKCksZj1OKCkscD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj10P3A6ZnVuY3Rpb24oZSx0KXtpZihlPWwoZSksdD11KHQpLGYpdHJ5e3JldHVybiBwKGUsdCl9Y2F0Y2goZSl7fWlmKGQoZSx0KSlyZXR1cm4gYSghbihyLmYsZSx0KSxlW3RdKX19KSksb2U9dCgoKGUsdCk9Pnt2YXIgbj1pKCksYT1yKCk7dC5leHBvcnRzPW4mJmEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGZ1bmN0aW9uKCl7fSxgcHJvdG90eXBlYCx7dmFsdWU6NDIsd3JpdGFibGU6ITF9KS5wcm90b3R5cGUhPT00Mn0pfSkpLEY9dCgoKGUsdCk9Pnt2YXIgbj1nKCkscj1TdHJpbmcsaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgbmV3IGkocihlKStgIGlzIG5vdCBhbiBvYmplY3RgKX19KSksST10KChlPT57dmFyIHQ9aSgpLG49TigpLHI9b2UoKSxhPUYoKSxvPU0oKSxzPVR5cGVFcnJvcixjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdT1gZW51bWVyYWJsZWAsZD1gY29uZmlndXJhYmxlYCxmPWB3cml0YWJsZWA7ZS5mPXQ/cj9mdW5jdGlvbihlLHQsbil7aWYoYShlKSx0PW8odCksYShuKSx0eXBlb2YgZT09YGZ1bmN0aW9uYCYmdD09PWBwcm90b3R5cGVgJiZgdmFsdWVgaW4gbiYmZiBpbiBuJiYhbltmXSl7dmFyIHI9bChlLHQpO3ImJnJbZl0mJihlW3RdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOmQgaW4gbj9uW2RdOnJbZF0sZW51bWVyYWJsZTp1IGluIG4/blt1XTpyW3VdLHdyaXRhYmxlOiExfSl9cmV0dXJuIGMoZSx0LG4pfTpjOmZ1bmN0aW9uKGUsdCxyKXtpZihhKGUpLHQ9byh0KSxhKHIpLG4pdHJ5e3JldHVybiBjKGUsdCxyKX1jYXRjaChlKXt9aWYoYGdldGBpbiByfHxgc2V0YGluIHIpdGhyb3cgbmV3IHMoYEFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkYCk7cmV0dXJuYHZhbHVlYGluIHImJihlW3RdPXIudmFsdWUpLGV9fSkpLEw9dCgoKGUsdCk9Pnt2YXIgbj1pKCkscj1JKCksYT1jKCk7dC5leHBvcnRzPW4/ZnVuY3Rpb24oZSx0LG4pe3JldHVybiByLmYoZSx0LGEoMSxuKSl9OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZVt0XT1uLGV9fSkpLHNlPXQoKChlLHQpPT57dmFyIG49aSgpLHI9aygpLGE9RnVuY3Rpb24ucHJvdG90eXBlLG89biYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixzPXIoYSxgbmFtZWApO3QuZXhwb3J0cz17RVhJU1RTOnMsUFJPUEVSOnMmJihmdW5jdGlvbigpe30pLm5hbWU9PT1gc29tZXRoaW5nYCxDT05GSUdVUkFCTEU6cyYmKCFufHxuJiZvKGEsYG5hbWVgKS5jb25maWd1cmFibGUpfX0pKSxSPXQoKChlLHQpPT57dmFyIG49bCgpLHI9aCgpLGk9RCgpLGE9bihGdW5jdGlvbi50b1N0cmluZyk7cihpLmluc3BlY3RTb3VyY2UpfHwoaS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSksdC5leHBvcnRzPWkuaW5zcGVjdFNvdXJjZX0pKSx6PXQoKChlLHQpPT57dmFyIHI9bigpLGk9aCgpLGE9ci5XZWFrTWFwO3QuZXhwb3J0cz1pKGEpJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKGEpKX0pKSxCPXQoKChlLHQpPT57dmFyIG49TygpLHI9QSgpLGk9bihga2V5c2ApO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaVtlXXx8KGlbZV09cihlKSl9fSkpLFY9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9e319KSksSD10KCgoZSx0KT0+e3ZhciByPXooKSxpPW4oKSxhPWcoKSxvPUwoKSxzPWsoKSxjPUQoKSxsPUIoKSx1PVYoKSxkPWBPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZGAsZj1pLlR5cGVFcnJvcixwPWkuV2Vha01hcCxtLGgsXyx2PWZ1bmN0aW9uKGUpe3JldHVybiBfKGUpP2goZSk6bShlLHt9KX0seT1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG47aWYoIWEodCl8fChuPWgodCkpLnR5cGUhPT1lKXRocm93IG5ldyBmKGBJbmNvbXBhdGlibGUgcmVjZWl2ZXIsIGArZStgIHJlcXVpcmVkYCk7cmV0dXJuIG59fTtpZihyfHxjLnN0YXRlKXt2YXIgYj1jLnN0YXRlfHwoYy5zdGF0ZT1uZXcgcCk7Yi5nZXQ9Yi5nZXQsYi5oYXM9Yi5oYXMsYi5zZXQ9Yi5zZXQsbT1mdW5jdGlvbihlLHQpe2lmKGIuaGFzKGUpKXRocm93IG5ldyBmKGQpO3JldHVybiB0LmZhY2FkZT1lLGIuc2V0KGUsdCksdH0saD1mdW5jdGlvbihlKXtyZXR1cm4gYi5nZXQoZSl8fHt9fSxfPWZ1bmN0aW9uKGUpe3JldHVybiBiLmhhcyhlKX19ZWxzZXt2YXIgeD1sKGBzdGF0ZWApO3VbeF09ITAsbT1mdW5jdGlvbihlLHQpe2lmKHMoZSx4KSl0aHJvdyBuZXcgZihkKTtyZXR1cm4gdC5mYWNhZGU9ZSxvKGUseCx0KSx0fSxoPWZ1bmN0aW9uKGUpe3JldHVybiBzKGUseCk/ZVt4XTp7fX0sXz1mdW5jdGlvbihlKXtyZXR1cm4gcyhlLHgpfX10LmV4cG9ydHM9e3NldDptLGdldDpoLGhhczpfLGVuZm9yY2U6dixnZXR0ZXJGb3I6eX19KSksVT10KCgoZSx0KT0+e3ZhciBuPWwoKSxhPXIoKSxvPWgoKSxzPWsoKSxjPWkoKSx1PXNlKCkuQ09ORklHVVJBQkxFLGQ9UigpLGY9SCgpLHA9Zi5lbmZvcmNlLG09Zi5nZXQsZz1TdHJpbmcsXz1PYmplY3QuZGVmaW5lUHJvcGVydHksdj1uKGBgLnNsaWNlKSx5PW4oYGAucmVwbGFjZSksYj1uKFtdLmpvaW4pLHg9YyYmIWEoZnVuY3Rpb24oKXtyZXR1cm4gXyhmdW5jdGlvbigpe30sYGxlbmd0aGAse3ZhbHVlOjh9KS5sZW5ndGghPT04fSksUz1TdHJpbmcoU3RyaW5nKS5zcGxpdChgU3RyaW5nYCksQz10LmV4cG9ydHM9ZnVuY3Rpb24oZSx0LG4pe3YoZyh0KSwwLDcpPT09YFN5bWJvbChgJiYodD1gW2AreShnKHQpLC9eU3ltYm9sXCgoW14pXSopXCkuKiQvLGAkMWApK2BdYCksbiYmbi5nZXR0ZXImJih0PWBnZXQgYCt0KSxuJiZuLnNldHRlciYmKHQ9YHNldCBgK3QpLCghcyhlLGBuYW1lYCl8fHUmJmUubmFtZSE9PXQpJiYoYz9fKGUsYG5hbWVgLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMH0pOmUubmFtZT10KSx4JiZuJiZzKG4sYGFyaXR5YCkmJmUubGVuZ3RoIT09bi5hcml0eSYmXyhlLGBsZW5ndGhgLHt2YWx1ZTpuLmFyaXR5fSk7dHJ5e24mJnMobixgY29uc3RydWN0b3JgKSYmbi5jb25zdHJ1Y3Rvcj9jJiZfKGUsYHByb3RvdHlwZWAse3dyaXRhYmxlOiExfSk6ZS5wcm90b3R5cGUmJihlLnByb3RvdHlwZT12b2lkIDApfWNhdGNoKGUpe312YXIgcj1wKGUpO3JldHVybiBzKHIsYHNvdXJjZWApfHwoci5zb3VyY2U9YihTLHR5cGVvZiB0PT1gc3RyaW5nYD90OmBgKSksZX07RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nPUMoZnVuY3Rpb24oKXtyZXR1cm4gbyh0aGlzKSYmbSh0aGlzKS5zb3VyY2V8fGQodGhpcyl9LGB0b1N0cmluZ2ApfSkpLFc9dCgoKGUsdCk9Pnt2YXIgbj1oKCkscj1JKCksaT1VKCksYT1FKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxvLHMpe3N8fChzPXt9KTt2YXIgYz1zLmVudW1lcmFibGUsbD1zLm5hbWU9PT12b2lkIDA/dDpzLm5hbWU7aWYobihvKSYmaShvLGwscykscy5nbG9iYWwpYz9lW3RdPW86YSh0LG8pO2Vsc2V7dHJ5e3MudW5zYWZlP2VbdF0mJihjPSEwKTpkZWxldGUgZVt0XX1jYXRjaChlKXt9Yz9lW3RdPW86ci5mKGUsdCx7dmFsdWU6byxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohcy5ub25Db25maWd1cmFibGUsd3JpdGFibGU6IXMubm9uV3JpdGFibGV9KX1yZXR1cm4gZX19KSksRz10KCgoZSx0KT0+e3ZhciBuPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPU1hdGgudHJ1bmN8fGZ1bmN0aW9uKGUpe3ZhciB0PStlO3JldHVybih0PjA/cjpuKSh0KX19KSksSz10KCgoZSx0KT0+e3ZhciBuPUcoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPT10fHx0PT09MD8wOm4odCl9fSkpLGNlPXQoKChlLHQpPT57dmFyIG49SygpLHI9TWF0aC5tYXgsaT1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgYT1uKGUpO3JldHVybiBhPDA/cihhK3QsMCk6aShhLHQpfX0pKSxsZT10KCgoZSx0KT0+e3ZhciBuPUsoKSxyPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpO3JldHVybiB0PjA/cih0LDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSkpLHVlPXQoKChlLHQpPT57dmFyIG49bGUoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS5sZW5ndGgpfX0pKSxkZT10KCgoZSx0KT0+e3ZhciBuPW0oKSxyPWNlKCksaT11ZSgpLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsYSxvKXt2YXIgcz1uKHQpLGM9aShzKTtpZihjPT09MClyZXR1cm4hZSYmLTE7dmFyIGw9cihvLGMpLHU7aWYoZSYmYSE9PWEpe2Zvcig7Yz5sOylpZih1PXNbbCsrXSx1IT09dSlyZXR1cm4hMH1lbHNlIGZvcig7Yz5sO2wrKylpZigoZXx8bCBpbiBzKSYmc1tsXT09PWEpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07dC5leHBvcnRzPXtpbmNsdWRlczphKCEwKSxpbmRleE9mOmEoITEpfX0pKSxmZT10KCgoZSx0KT0+e3ZhciBuPWwoKSxyPWsoKSxpPW0oKSxhPWRlKCkuaW5kZXhPZixvPVYoKSxzPW4oW10ucHVzaCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49aShlKSxjPTAsbD1bXSx1O2Zvcih1IGluIG4pIXIobyx1KSYmcihuLHUpJiZzKGwsdSk7Zm9yKDt0Lmxlbmd0aD5jOylyKG4sdT10W2MrK10pJiYofmEobCx1KXx8cyhsLHUpKTtyZXR1cm4gbH19KSkscGU9dCgoKGUsdCk9Pnt0LmV4cG9ydHM9W2Bjb25zdHJ1Y3RvcmAsYGhhc093blByb3BlcnR5YCxgaXNQcm90b3R5cGVPZmAsYHByb3BlcnR5SXNFbnVtZXJhYmxlYCxgdG9Mb2NhbGVTdHJpbmdgLGB0b1N0cmluZ2AsYHZhbHVlT2ZgXX0pKSxtZT10KChlPT57dmFyIHQ9ZmUoKSxuPXBlKCkuY29uY2F0KGBsZW5ndGhgLGBwcm90b3R5cGVgKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9fSkpLGhlPXQoKGU9PntlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30pKSxxPXQoKChlLHQpPT57dmFyIG49XygpLHI9bCgpLGk9bWUoKSxhPWhlKCksbz1GKCkscz1yKFtdLmNvbmNhdCk7dC5leHBvcnRzPW4oYFJlZmxlY3RgLGBvd25LZXlzYCl8fGZ1bmN0aW9uKGUpe3ZhciB0PWkuZihvKGUpKSxuPWEuZjtyZXR1cm4gbj9zKHQsbihlKSk6dH19KSksZ2U9dCgoKGUsdCk9Pnt2YXIgbj1rKCkscj1xKCksaT1QKCksYT1JKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCxvKXtmb3IodmFyIHM9cih0KSxjPWEuZixsPWkuZix1PTA7dTxzLmxlbmd0aDt1Kyspe3ZhciBkPXNbdV07IW4oZSxkKSYmIShvJiZuKG8sZCkpJiZjKGUsZCxsKHQsZCkpfX19KSksX2U9dCgoKGUsdCk9Pnt2YXIgbj1yKCksaT1oKCksYT0vI3xcLnByb3RvdHlwZVwuLyxvPWZ1bmN0aW9uKGUsdCl7dmFyIHI9Y1tzKGUpXTtyZXR1cm4gcj09PXU/ITA6cj09PWw/ITE6aSh0KT9uKHQpOiEhdH0scz1vLm5vcm1hbGl6ZT1mdW5jdGlvbihlKXtyZXR1cm4gU3RyaW5nKGUpLnJlcGxhY2UoYSxgLmApLnRvTG93ZXJDYXNlKCl9LGM9by5kYXRhPXt9LGw9by5OQVRJVkU9YE5gLHU9by5QT0xZRklMTD1gUGA7dC5leHBvcnRzPW99KSksdmU9dCgoKGUsdCk9Pnt2YXIgcj1uKCksaT1QKCkuZixhPUwoKSxvPVcoKSxzPUUoKSxjPWdlKCksbD1fZSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudGFyZ2V0LHU9ZS5nbG9iYWwsZD1lLnN0YXQsZixwPXU/cjpkP3Jbbl18fHMobix7fSk6cltuXSYmcltuXS5wcm90b3R5cGUsbSxoLGcsXztpZihwKWZvcihtIGluIHQpe2lmKGc9dFttXSxlLmRvbnRDYWxsR2V0U2V0PyhfPWkocCxtKSxoPV8mJl8udmFsdWUpOmg9cFttXSxmPWwodT9tOm4rKGQ/YC5gOmAjYCkrbSxlLmZvcmNlZCksIWYmJmghPT12b2lkIDApe2lmKHR5cGVvZiBnPT10eXBlb2YgaCljb250aW51ZTtjKGcsaCl9KGUuc2hhbXx8aCYmaC5zaGFtKSYmYShnLGBzaGFtYCwhMCksbyhwLG0sZyxlKX19fSkpLHllPXQoKChlLHQpPT57dmFyIG49aSgpLHI9SSgpLGE9YygpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQsaSl7bj9yLmYoZSx0LGEoMCxpKSk6ZVt0XT1pfX0pKSxiZT10KCgoKT0+e3ZhciBlPXZlKCksdD1pKCksbj1xKCkscj1tKCksYT1QKCksbz15ZSgpO2Uoe3RhcmdldDpgT2JqZWN0YCxzdGF0OiEwLHNoYW06IXR9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1yKGUpLGk9YS5mLHM9bih0KSxjPXt9LGw9MCx1LGQ7cy5sZW5ndGg+bDspZD1pKHQsdT1zW2wrK10pLGQhPT12b2lkIDAmJm8oYyx1LGQpO3JldHVybiBjfX0pfSkpLHhlPXQoKChlLHQpPT57dC5leHBvcnRzPW4oKX0pKTt0KCgoZSx0KT0+e2JlKCksdC5leHBvcnRzPXhlKCkuT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnN9KSkoKTtsZXQgU2U9bmV3IGNsYXNze2luZm8oZSx0LC4uLm4pe3RoaXMuY2FsbChjb25zb2xlLmluZm8sZSx0LC4uLm4pfXdhcm4oZSx0LC4uLm4pe3RoaXMuY2FsbChjb25zb2xlLndhcm4sZSx0LC4uLm4pfWVycm9yKGUsdCwuLi5uKXt0aGlzLmNhbGwoY29uc29sZS5lcnJvcixlLHQsLi4ubiksdGhpcy5zZW5kRXJyb3JMb2dUb0NvbW1hbmRRdWV1ZShlLHQsLi4ubil9ZXZlbnQoZSx0LC4uLm4pe3ZhciByOygocj13aW5kb3cuYWR0aHJpdmVDTFMpPT1udWxsP3ZvaWQgMDpyLmJ1Y2tldCk9PT1gZGVidWdgJiZ0aGlzLmluZm8oZSx0KX1zZW5kRXJyb3JMb2dUb0NvbW1hbmRRdWV1ZShlLHQsLi4ubil7d2luZG93LmFkdGhyaXZlPXdpbmRvdy5hZHRocml2ZXx8e30sd2luZG93LmFkdGhyaXZlLmNtZD13aW5kb3cuYWR0aHJpdmUuY21kfHxbXSx3aW5kb3cuYWR0aHJpdmUuY21kLnB1c2goKCk9Pnt3aW5kb3cuYWR0aHJpdmUubG9nRXJyb3IhPT12b2lkIDAmJnR5cGVvZiB3aW5kb3cuYWR0aHJpdmUubG9nRXJyb3I9PWBmdW5jdGlvbmAmJndpbmRvdy5hZHRocml2ZS5sb2dFcnJvcihlLHQsbil9KX1jYWxsKGUsdCxuLC4uLnIpe2xldCBpPVtgJWMke3R9Ojoke259IGBdLGE9W2Bjb2xvcjogIzk5OTsgZm9udC13ZWlnaHQ6IGJvbGQ7YF07ci5sZW5ndGg+MCYmdHlwZW9mIHJbMF09PWBzdHJpbmdgJiZpLnB1c2goci5zaGlmdCgpKSxhLnB1c2goLi4ucik7dHJ5e0Z1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGUsY29uc29sZSxbaS5qb2luKGBgKSwuLi5hXSl9Y2F0Y2goZSl7Y29uc29sZS5lcnJvcihlKTtyZXR1cm59fX0sQ2U9KCk9PndpbmRvdy5hZHRocml2ZUNMUyxKPXtCZWxvd19Qb3N0XzE6YEJlbG93X1Bvc3RfMWAsQmVsb3dfUG9zdDpgQmVsb3dfUG9zdGAsQ29udGVudDpgQ29udGVudGAsQ29udGVudF8xOmBDb250ZW50XzFgLENvbnRlbnRfMjpgQ29udGVudF8yYCxDb250ZW50XzM6YENvbnRlbnRfM2AsQ29udGVudF80OmBDb250ZW50XzRgLENvbnRlbnRfNTpgQ29udGVudF81YCxDb250ZW50XzY6YENvbnRlbnRfNmAsQ29udGVudF83OmBDb250ZW50XzdgLENvbnRlbnRfODpgQ29udGVudF84YCxDb250ZW50Xzk6YENvbnRlbnRfOWAsUmVjaXBlOmBSZWNpcGVgLFJlY2lwZV8xOmBSZWNpcGVfMWAsUmVjaXBlXzI6YFJlY2lwZV8yYCxSZWNpcGVfMzpgUmVjaXBlXzNgLFJlY2lwZV80OmBSZWNpcGVfNGAsUmVjaXBlXzU6YFJlY2lwZV81YCxOYXRpdmVfUmVjaXBlOmBOYXRpdmVfUmVjaXBlYCxGb290ZXJfMTpgRm9vdGVyXzFgLEZvb3RlcjpgRm9vdGVyYCxIZWFkZXJfMTpgSGVhZGVyXzFgLEhlYWRlcl8yOmBIZWFkZXJfMmAsSGVhZGVyOmBIZWFkZXJgLFNpZGViYXJfMTpgU2lkZWJhcl8xYCxTaWRlYmFyXzI6YFNpZGViYXJfMmAsU2lkZWJhcl8zOmBTaWRlYmFyXzNgLFNpZGViYXJfNDpgU2lkZWJhcl80YCxTaWRlYmFyXzU6YFNpZGViYXJfNWAsU2lkZWJhcl85OmBTaWRlYmFyXzlgLFNpZGViYXI6YFNpZGViYXJgLEludGVyc3RpdGlhbF8xOmBJbnRlcnN0aXRpYWxfMWAsSW50ZXJzdGl0aWFsOmBJbnRlcnN0aXRpYWxgLFZpZGVvX1N0aWNreU91dHN0cmVhbV8xOmBWaWRlb19TdGlja3lPdXRzdHJlYW1fMWAsVmlkZW9fU3RpY2t5T3V0c3RyZWFtOmBWaWRlb19TdGlja3lPdXRzdHJlYW1gLFZpZGVvX1N0aWNreUluc3RyZWFtOmBWaWRlb19TdGlja3lJbnN0cmVhbWAsU3BvbnNvcl9UaWxlOmBTcG9uc29yX1RpbGVgfSxZPWU9PntsZXQgdD13aW5kb3cubG9jYXRpb24uaHJlZjtyZXR1cm4gZS5zb21lKGU9Pm5ldyBSZWdFeHAoZSxgaWApLnRlc3QodCkpfTtmdW5jdGlvbiBYKGUpeyJAYmFiZWwvaGVscGVycyAtIHR5cGVvZiI7cmV0dXJuIFg9dHlwZW9mIFN5bWJvbD09YGZ1bmN0aW9uYCYmdHlwZW9mIFN5bWJvbC5pdGVyYXRvcj09YHN5bWJvbGA/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmdHlwZW9mIFN5bWJvbD09YGZ1bmN0aW9uYCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/YHN5bWJvbGA6dHlwZW9mIGV9LFgoZSl9ZnVuY3Rpb24gd2UoZSx0KXtpZihYKGUpIT1gb2JqZWN0YHx8IWUpcmV0dXJuIGU7dmFyIG49ZVtTeW1ib2wudG9QcmltaXRpdmVdO2lmKG4hPT12b2lkIDApe3ZhciByPW4uY2FsbChlLHR8fGBkZWZhdWx0YCk7aWYoWChyKSE9YG9iamVjdGApcmV0dXJuIHI7dGhyb3cgVHlwZUVycm9yKGBAQHRvUHJpbWl0aXZlIG11c3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlLmApfXJldHVybih0PT09YHN0cmluZ2A/U3RyaW5nOk51bWJlcikoZSl9ZnVuY3Rpb24gVGUoZSl7dmFyIHQ9d2UoZSxgc3RyaW5nYCk7cmV0dXJuIFgodCk9PWBzeW1ib2xgP3Q6dCtgYH1mdW5jdGlvbiBaKGUsdCxuKXtyZXR1cm4odD1UZSh0KSlpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX12YXIgUT1jbGFzc3tjb25zdHJ1Y3RvcihlKXt0aGlzLmFkdGhyaXZlPWUsWih0aGlzLGBhbGxgLCExKSxaKHRoaXMsYGNvbnRlbnRgLCExKSxaKHRoaXMsYHJlY2lwZWAsITEpLFoodGhpcyxgdmlkZW9gLCExKSxaKHRoaXMsYGxvY2F0aW9uc2AsbmV3IFNldCksWih0aGlzLGByZWFzb25zYCxuZXcgU2V0KSwodGhpcy51cmxIYXNFbWFpbCh3aW5kb3cubG9jYXRpb24uaHJlZil8fHRoaXMudXJsSGFzRW1haWwod2luZG93LmRvY3VtZW50LnJlZmVycmVyKSkmJih0aGlzLmFsbD0hMCx0aGlzLnJlYXNvbnMuYWRkKGBhbGxfZW1haWxgKSk7dHJ5e3RoaXMuY2hlY2tDb21tYW5kUXVldWUoKSxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAudGFnLW5vdmlkZW9gKSE9PW51bGwmJih0aGlzLnZpZGVvPSEwLHRoaXMubG9jYXRpb25zLmFkZChgVmlkZW9gKSx0aGlzLnJlYXNvbnMuYWRkKGB2aWRlb190YWdgKSl9Y2F0Y2goZSl7U2UuZXJyb3IoYENsc0Rpc2FibGVBZHNgLGBjaGVja0NvbW1hbmRRdWV1ZWAsZSl9fWNoZWNrQ29tbWFuZFF1ZXVlKCl7dGhpcy5hZHRocml2ZSYmdGhpcy5hZHRocml2ZS5jbWQmJnRoaXMuYWR0aHJpdmUuY21kLmZvckVhY2goZT0+e2xldCB0PWUudG9TdHJpbmcoKSxuPXRoaXMuZXh0cmFjdEFQSUNhbGwodCxgZGlzYWJsZUFkc2ApO24mJnRoaXMuZGlzYWJsZUFsbEFkcyh0aGlzLmV4dHJhY3RQYXR0ZXJucyhuKSk7bGV0IHI9dGhpcy5leHRyYWN0QVBJQ2FsbCh0LGBkaXNhYmxlQ29udGVudEFkc2ApO3ImJnRoaXMuZGlzYWJsZUNvbnRlbnRBZHModGhpcy5leHRyYWN0UGF0dGVybnMocikpO2xldCBpPXRoaXMuZXh0cmFjdEFQSUNhbGwodCxgZGlzYWJsZVBsYXlsaXN0UGxheWVyc2ApO2kmJnRoaXMuZGlzYWJsZVBsYXlsaXN0UGxheWVycyh0aGlzLmV4dHJhY3RQYXR0ZXJucyhpKSl9KX1leHRyYWN0UGF0dGVybnMoZSl7bGV0IHQ9ZS5tYXRjaCgvWyInXSguKj8pWyciXS9nKTtpZih0IT09bnVsbClyZXR1cm4gdC5tYXAoZT0+ZS5yZXBsYWNlKC9bIiddL2csYGApKX1leHRyYWN0QVBJQ2FsbChlLHQpe2xldCBuPVJlZ0V4cCh0K2BcXCgoLio/KVxcKWAsYGdgKSxyPWUubWF0Y2gobik7cmV0dXJuIHI9PT1udWxsPyExOnJbMF19ZGlzYWJsZUFsbEFkcyhlKXsoIWV8fFkoZSkpJiYodGhpcy5hbGw9ITAsdGhpcy5yZWFzb25zLmFkZChgYWxsX3BhZ2VgKSl9ZGlzYWJsZUNvbnRlbnRBZHMoZSl7KCFlfHxZKGUpKSYmKHRoaXMuY29udGVudD0hMCx0aGlzLnJlY2lwZT0hMCx0aGlzLmxvY2F0aW9ucy5hZGQoSi5Db250ZW50KSx0aGlzLmxvY2F0aW9ucy5hZGQoSi5SZWNpcGUpLHRoaXMucmVhc29ucy5hZGQoYGNvbnRlbnRfcGx1Z2luYCkpfWRpc2FibGVQbGF5bGlzdFBsYXllcnMoZSl7KCFlfHxZKGUpKSYmKHRoaXMudmlkZW89ITAsdGhpcy5sb2NhdGlvbnMuYWRkKGBWaWRlb2ApLHRoaXMucmVhc29ucy5hZGQoYHZpZGVvX3BhZ2VgKSl9dXJsSGFzRW1haWwoZSl7cmV0dXJuIGU/LyhbQS1aMC05Ll8lKy1dKyhAfCUoMjUpKjQwKVtBLVowLTkuLV0rXC5bQS1aXXsyLH0pL2kuZXhlYyhlKSE9PW51bGw6ITF9fTtsZXQgJD1DZSgpO3JldHVybiAkJiYoJC5kaXNhYmxlQWRzPW5ldyBRKHdpbmRvdy5hZHRocml2ZSkpLGUuQ2xzRGlzYWJsZUFkcz1RLGV9KSh7fSk7"></script> </head><body class="home wp-singular page-template page-template-front-page-draft page-template-front-page-draft-php page page-id-79538 wp-theme-genesis wp-child-theme-savingadvice20 content-sidebar genesis-breadcrumbs-hidden genesis-footer-widgets-hidden"><div class="site-container"><ul class="genesis-skip-link"><li><a href="#genesis-nav-primary" class="screen-reader-shortcut"> Skip to primary navigation</a></li><li><a href="#genesis-content" class="screen-reader-shortcut"> Skip to main content</a></li><li><a href="#genesis-sidebar-primary" class="screen-reader-shortcut"> Skip to primary sidebar</a></li></ul><div class="custom-menu" style="display: none;"> <a href="#" class="cmenu-toggle"><i class="fa fa-times"></i></a><div class="custom-menu__inner"> <a href="https://www.savingadvice.com/"> <span class="custom-menu__item"> <span>Home</span> </span> </a><div class="custom-menu__child"> <a href="https://www.savingadvice.com/about-us">About Us</a> <a href="https://www.savingadvice.com/forums/contact-us">Contact Us</a> <a href="https://www.savingadvice.com/advertising">Advertising</a></div> <a href="https://www.savingadvice.com/articles"> <span class="custom-menu__item"> <span>Articles</span> </span> </a><div class="custom-menu__child"> <a href="https://www.savingadvice.com/articles/category/budgeting">Budgeting</a> <a href="https://www.savingadvice.com/articles/category/debt">Debt</a> <a href="https://www.savingadvice.com/articles/category/frugal">Frugal</a> <a href="https://www.savingadvice.com/articles/category/insurance">Insurance</a> <a href="https://www.savingadvice.com/articles/category/investing">Investing</a> <a href="https://www.savingadvice.com/articles/category/making-money">Making Money</a> <a href="https://www.savingadvice.com/articles/category/retirement">Retirement</a> <a href="https://www.savingadvice.com/articles/category/saving-money">Saving Money</a></div> <a href="https://www.savingadvice.com/tips"> <span class="custom-menu__item"> <span>Tips</span> </span> </a><div class="custom-menu__child"> <a href="https://www.savingadvice.com/articles/tip_category/money-saving-tips">Money Saving Tips</a> <a href="https://www.savingadvice.com/articles/tip_category/trash-audit">Trash Audit</a></div> <a href="https://www.savingadvice.com/1063125_ways-to-make-money-on-the-side.html"> <span class="custom-menu__item"> <span>Make Money</span> </span> </a> <a href="https://www.savingadvice.com/forums"> <span class="custom-menu__item"> <span>Forums</span> </span> </a> <a href="https://www.savingadvice.com/blogs"> <span class="custom-menu__item"> <span>Blogs</span> </span> </a><div class="custom-menu__child"> <a href="https://www.savingadvice.com/blogs/register.php">Create a Blog</a> <a href="https://www.savingadvice.com/blogs/cp">Control Panel</a> <a href="https://www.savingadvice.com/blog/all_entries">All Entries</a> <a href="https://www.savingadvice.com/blog/all_blogs">All Blogs</a></div> <a href="https://www.savingadvice.com/tools"> <span class="custom-menu__item"> <span>Tools</span> </span> </a><div class="custom-menu__child"> <a href="https://www.savingadvice.com/tools/calculators">Calculators</a> <a href="https://www.savingadvice.com/tools/prescription-drug-coupons">Prescription Drug Coupons</a> <a href="https://www.savingadvice.com/forums/forum/financial-chit-chat/investing-banking/8787-online-savings-accounts-current-rates">Online Savings Accounts</a> <a href="https://www.savingadvice.com/tools/quizzes">Test Your Knowledge</a> <a href="https://www.savingadvice.com/tools/quizzes">Financial Directory</a> <a href="https://www.savingadvice.com/tools/credit-cards">Credit Cards</a></div></div></div> <script>jQuery(window).on('load', function() {
				jQuery('.menu-toggle').click(function(e) {
					e.preventDefault();
					var mt = jQuery(this);
					jQuery('.custom-menu').toggleClass('active');
				})
				jQuery('.cmenu-toggle').click(function(e) {
					e.preventDefault();
					jQuery('.custom-menu').toggleClass('active');
				})
			})</script> <header class="site-header"><div class="wrap"><div class="title-area"><p class="site-title"><a href="https://www.savingadvice.com/">SavingAdvice.com Blog</a></p><p class="site-description">Bridging the gap between saving money and investing</p></div><div class="widget-area header-widget-area"><div class="header-se"><form action="https://www.savingadvice.com/search-results" method="GET"><input name="query" id="query" placeholder="Search..."><button type="submit"><i class="fa fa-search"></i></button></form></div> <a href="#" class="menu-toggle"><i class="fa fa-bars"></i></a><section id="text-20" class="widget widget_text"><div class="widget-wrap"><div class="textwidget"><fieldset style="padding: 5px; border: 1px solid #CCCCCC; margin: 0 0 20px 0;"><legend style="margin-bottom: 5px;"><small>Subscribe</small></legend><div style="float: left; font-weight: bold; font-size: 40px; margin-left: 15px;"></div><div style="float: left; font-weight: bold; font-size: 40px; margin-left: 15px;"></div><div style="float: left; font-weight: bold; font-size: 40px; margin-left: 15px;"></div><div style="float: left; font-weight: bold; font-size: 40px; margin-left: 15px;"></div><p>&nbsp;</fieldset><div class="widget_search"><div class="search-form"><script>(function() {
    var cx = '016944738621700925405:ptlk1onm7qi';
    var gcse = document.createElement('script');
    gcse.type = 'text/javascript';
    gcse.async = true;
    gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(gcse, s);
  })();</script></div></div></div></div></section><section id="text-18" class="widget widget_text"><div class="widget-wrap"><div class="textwidget"><p><a href="/forums/register.php">Join Now</a> <span>or</span> <a href="/login">Login</a></p></div></div></section></div><nav class="nav-primary" aria-label="Main" id="genesis-nav-primary"><div class="wrap"><ul id="menu-main" class="menu genesis-nav-menu menu-primary js-superfish"><li id="menu-item-15653" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-has-children menu-item-15653"><a href="/" aria-current="page"><span >Home</span></a><ul class="sub-menu"><li id="menu-item-49320" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-49320"><a href="/advertising"><span >Advertising</span></a></li></ul></li><li id="menu-item-49322" class="menu-dropper menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-49322"><a href="/tips"><span >Tips</span></a><ul class="sub-menu"><li id="menu-item-50468" class="menu-item menu-item-type-taxonomy menu-item-object-tip_category menu-item-50468"><a href="https://www.savingadvice.com/articles/tip_category/money-saving-tips/"><span >Money Saving Tips</span></a></li><li id="menu-item-50469" class="menu-item menu-item-type-taxonomy menu-item-object-tip_category menu-item-50469"><a href="https://www.savingadvice.com/articles/tip_category/trash-audit/"><span >Recycle, Reuse and Repurpose</span></a></li></ul></li><li id="menu-item-68417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-68417"><a href="https://www.savingadvice.com/articles/2024/06/12/1063125_the-side-hustle-stack-38-easy-ways-to-stack-money-on-the-side.html"><span >Make Money</span></a></li><li id="menu-item-149895" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-149895"><a href="https://www.savingadvice.com/articles/2024/12/02/10149341_a-good-credit-score-is-a-tool-for-your-personal-finances.html"><span >Credit Score Guide</span></a></li><li id="menu-item-49323" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-49323"><a href="/forums"><span >Forums</span></a></li><li id="menu-item-60614" class="header-blog-link menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-60614"><a href="/blogs"><span >Blogs</span></a><ul class="sub-menu"><li id="menu-item-56061" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-56061"><a href="/blogs/register.php"><span >Create a Blog</span></a></li></ul></li><li id="menu-item-49325" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-49325"><a href="/tools"><span >Tools</span></a></li><li id="menu-item-113045" class="menu-dropper menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-113045"><a href="#"><span >Financial Basics</span></a><ul class="sub-menu"><li id="menu-item-113966" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-113966"><a href="https://www.savingadvice.com/articles/2023/06/06/10113894_saving-money.html"><span >Back to Basics: Saving Money</span></a></li><li id="menu-item-113967" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-113967"><a href="https://www.savingadvice.com/articles/2023/06/06/10113879_beginners-guide-to-retirement.html"><span >Back to Basics: Beginners Guide to Retirement</span></a></li><li id="menu-item-113968" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-113968"><a href="https://www.savingadvice.com/articles/2023/06/06/10113812_kids-personal-finance.html"><span >Back to Basics: What Every Child Under 10 Should Know About Personal Finance</span></a></li><li id="menu-item-113969" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-113969"><a href="https://www.savingadvice.com/articles/2023/06/06/10113890_investing-in-stocks.html"><span >Back to Financial Basics: Investing In Stocks</span></a></li></ul></li></ul></div></nav></div></header><div class="site-inner"><div class="content-sidebar-wrap"><main class="content" id="genesis-content"> <script>jQuery(document).ready(function(){
		// Add something to given element placeholder
		function addToPlaceholder(toAdd, el) {
			el.attr('placeholder', el.attr('placeholder') + toAdd);
			// Delay between symbols "typing" 
			return new Promise(resolve => setTimeout(resolve, 100));
		}

		// Cleare placeholder attribute in given element
		function clearPlaceholder(el) {
			el.attr("placeholder", "");
		}

		// Print one phrase
		function printPhrase(phrase, el) {
			return new Promise(resolve => {
				// Clear placeholder before typing next phrase
				clearPlaceholder(el);
				let letters = phrase.split('');
				// For each letter in phrase
				letters.reduce(
					(promise, letter, index) => promise.then(_ => {
						// Resolve promise when all letters are typed
						if (index === letters.length - 1) {
							// Delay before start next phrase "typing"
							setTimeout(resolve, 1000);
						}
						return addToPlaceholder(letter, el);
					}),
					Promise.resolve()
				);
			});
		} 

		// Print given phrases to element
		function printPhrases(phrases, el) {
			// For each phrase
			// wait for phrase to be typed
			// before start typing next
			phrases.reduce(
				(promise, phrase) => promise.then(_ => printPhrase(phrase, el)), 
				Promise.resolve()
			);
		}

		// Start typing
		function run() {
			let phrases = [
				"Search articles here..",
				"How to Save Money...",
				"52 Week Money Challenge",
				"How to Budget..."
			];

			printPhrases(phrases, jQuery('#query'));
		}

		//run();

		setInterval(function(){
			//run()
		},15500)
	});</script> <div class="home-widgets"><div class="home-top"><section id="text-7" class="widget widget_text"><div class="widget-wrap"><h3 class="widgettitle widget-title">Who Are We</h3><div class="textwidget"><p>Saving Advice is a community built around the notion that saving money is good. We offer free articles and information on all aspects of personal finance including debt reduction, how to save money, how to make money and how to invest. If you need any money saving advice, you have found the right place.</p></div></div></section></div><div class="home-middle"></div><div class="ntop"><div class="ntop__row"><div class="ntop__col ntop__col--1"> <a href="https://www.savingadvice.com/articles/2026/02/16/10721400_9-regrets-seniors-have-about-social-security-from-filing-too-early-to-missing-key-credits.html" data-name="Top Left" class="ntop__img chome-link"> <img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/shutterstock_2627932351-550x290.jpg?strip=all" /><div class="ntop__overlay"></div><div class="ntop__mid ntop__mid--mob"> <span class="ntop__cat" style="margin: 0 4px;">social security</span> <span href="https://www.savingadvice.com/articles/2026/02/16/10721400_9-regrets-seniors-have-about-social-security-from-filing-too-early-to-missing-key-credits.html" class="ntop__title">9 Regrets Seniors Have About Social Security — From Filing Too Early to Missing Key Credits</span> <span class="ntop__ago">17 minutes ago</span> <span class="ntop__author">Amanda Blankenship</span></div> </a></div><div class="ntop__col ntop__col--2"><div class="ntop__mid"><div class="mid__holder"><div> <a href="https://www.savingadvice.com/catetory/taxes" data-name="Top Mid" class="ntop__cat chome-link" style="margin: 0 4px 4px; padding: 0 5px;">Taxes</a></div> <a data-name="Top Mid" href="https://www.savingadvice.com/articles/2026/02/16/10721397_7-filing-mistakes-that-increase-your-audit-risk-in-2026.html" class="ntop__title chome-link">7 Filing Mistakes That Increase Your Audit Risk in 2026</a> <span class="ntop__ago">17 minutes ago</span> <span class="ntop__author">Amanda Blankenship</span></div></div></div><div class="ntop__col ntop__col--2 top-trending"><div class="ntop__mid"><div class="mid__holder"> <span href="#" data-name="Top Mid" class="ntop__cat chome-link" style="margin: 0 4px 4px; padding: 0 9px;">Trending</span><div class="wpp-shortcode"><script type="application/json" data-id="wpp-shortcode-inline-js">{"title":"","limit":"1","offset":0,"range":"last30days","time_quantity":24,"time_unit":"hour","freshness":false,"order_by":"views","post_type":"post","pid":"","exclude":"","cat":"","taxonomy":"category","term_id":"","author":"","shorten_title":{"active":false,"length":0,"words":false},"post-excerpt":{"active":false,"length":0,"keep_format":false,"words":false},"thumbnail":{"active":true,"build":"manual","width":"300","height":"300"},"rating":false,"stats_tag":{"comment_count":false,"views":"1","author":false,"date":{"active":"1","format":"F j, Y"},"category":false,"taxonomy":{"active":false,"name":"category"}},"markup":{"custom_html":true,"wpp-start":"<ul class=\"wpp-list\">","wpp-end":"<\/ul>","title-start":"<h2>","title-end":"<\/h2>","post-html":"&lt;a data-id=&quot;{pid}&quot; data-name=&quot;Top Mid&quot; href=&quot;{url}&quot; class=&quot;ntop__title chome-link&quot;&gt;{text_title}&lt;\/a&gt;&lt;span class=&quot;ntop__ago&quot;&gt;{date}&lt;\/span&gt;&lt;span class=&quot;ntop__author&quot;&gt;&lt;\/span&gt;"},"theme":{"name":""}}</script><div class="wpp-shortcode-placeholder"></div></div></div></div></div></div><div class="ntop__col ntop__col--3" style="display: none;">  <script type="text/javascript" src="https://tnzf.maillist-manage.com/js/optin.min.js" onload="setupSF('sf31208f33119a43c1cc131d3cc63ba270f3898872493ca85e','ZCFORMVIEW',false,'light',false,'0')"></script> <script type="text/javascript">function runOnFormSubmit_sf31208f33119a43c1cc131d3cc63ba270f3898872493ca85e(th){
						/*Before submit, if you want to trigger your event, "include your code here"*/
					};</script> <div id="sf31208f33119a43c1cc131d3cc63ba270f3898872493ca85e" data-type="signupform" style="opacity: 1;"><div id="customForm"><div class="quick_form_10_css" style="background-color: rgb(66, 113, 181); width: 250px; z-index: 2; font-family: Arial; overflow: hidden; border-color: rgb(81, 136, 198); border-width: 10px" name="SIGNUP_BODY"><div class="form-icon"> <i class="fa fa-envelope"></i></div><div style="text-align: center"><div class="formc"><h3>Join Our Newsletter</h3><p>Join us for a daily dose of our best tips & tools and a free financial bootcamp.</p></div><div style="position:relative;"><div id="Zc_SignupSuccess" style="display:none;position:absolute;margin-left:4%;width:90%;background-color: white; padding: 3px; border: 3px solid rgb(194, 225, 154);  margin-top: 10px;margin-bottom:10px;word-break:break-all"><table width="100%" cellpadding="0" cellspacing="0" border="0"><tbody><tr><td width="10%"> <noscript><img class="successicon" src="https://tnzf.maillist-manage.com/images/challangeiconenable.jpg" align="absmiddle"></noscript><img class="lazyload successicon" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://tnzf.maillist-manage.com/images/challangeiconenable.jpg" align="absmiddle"></td><td> <span id="signupSuccessMsg" style="color: rgb(73, 140, 132); font-family: sans-serif; font-size: 14px;word-break:break-word">&nbsp;&nbsp;Thank you for Signing Up</span></td></tr></tbody></table></div></div><form method="POST" id="zcampaignOptinForm" style="margin: 0px; width: 100%" action="https://maillist-manage.com/weboptin.zc" target="_zcSignup"><div style="background-color: rgb(255, 235, 232); padding: 10px; color: rgb(210, 0, 0); font-size: 11px; margin: 20px 10px 0px; border: 1px solid rgb(255, 217, 211); opacity: 1; display: none" id="errorMsgDiv">Please correct the marked field(s) below.</div><div class="cform-fields"> <input type="text" placeholder="Email" changeitem="SIGNUP_FORM_FIELD" name="CONTACT_EMAIL" id="EMBED_FORM_EMAIL_LABEL"></div><div class="cform-fields"> <input type="text" placeholder="Name" changeitem="SIGNUP_FORM_FIELD" name="LASTNAME" id="EMBED_FORM_NAME_LABEL"></div><div class="cform-fields"> <input type="button" data-name="Newsletter" name="SIGNUP_SUBMIT_BUTTON" id="zcWebOptin" value="JOIN NOW"></div> <input type="hidden" id="fieldBorder" value=""> <input type="hidden" id="submitType" name="submitType" value="optinCustomView"> <input type="hidden" id="emailReportId" name="emailReportId" value=""> <input type="hidden" id="formType" name="formType" value="QuickForm"> <input type="hidden" name="zx" id="cmpZuid" value="1270b2a3b"> <input type="hidden" name="zcvers" value="3.0"> <input type="hidden" name="oldListIds" id="allCheckedListIds" value=""> <input type="hidden" id="mode" name="mode" value="OptinCreateView"> <input type="hidden" id="zcld" name="zcld" value="15dc36258eabd579"> <input type="hidden" id="document_domain" value=""> <input type="hidden" id="zc_Url" value="tnzf.maillist-manage.com"> <input type="hidden" id="new_optin_response_in" value="0"> <input type="hidden" id="duplicate_optin_response_in" value="0"> <input type="hidden" name="zc_trackCode" id="zc_trackCode" value="ZCFORMVIEW"> <input type="hidden" id="zc_formIx" name="zc_formIx" value="31208f33119a43c1cc131d3cc63ba270f3898872493ca85e"> <input type="hidden" id="viewFrom" value="URL_ACTION"> <span style="display: none" id="dt_CONTACT_EMAIL">1,true,6,Contact Email,2</span> <span style="display: none" id="dt_FIRSTNAME">1,false,1,First Name,2</span> <span style="display: none" id="dt_LASTNAME">1,false,1,Last Name,2</span></form></div></div></div> <noscript><img src="https://tnzf.maillist-manage.com/images/spacer.gif" onload="referenceSetter(this)" style="display:none;"></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://tnzf.maillist-manage.com/images/spacer.gif" id="refImage" onload="referenceSetter(this)" style="display:none;"></div> <input type="hidden" id="signupFormType" value="QuickForm_Vertical"><div id="zcOptinOverLay" oncontextmenu="return false" style="display:none;text-align: center; background-color: rgb(0, 0, 0); opacity: 0.5; z-index: 100; position: fixed; width: 100%; top: 0px; left: 0px; height: 988px;"></div><div id="zcOptinSuccessPopup" style="display:none;z-index: 9999;width: 800px; height: 40%;top: 84px;position: fixed; left: 26%;background-color: #FFFFFF;border-color: #E6E6E6; border-style: solid; border-width: 1px;  box-shadow: 0 1px 10px #424242;padding: 35px;"> <span style="position: absolute;top: -16px;right:-14px;z-index:99999;cursor: pointer;" id="closeSuccess"> <noscript><img src="https://tnzf.maillist-manage.com/images/videoclose.png"></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://tnzf.maillist-manage.com/images/videoclose.png"> </span><div id="zcOptinSuccessPanel"></div></div></div></div></div><div class="asdf" style="display: none"></div><div class="latest-feed"><h2>Our Latest Articles</h2><div class="box"><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/16/10721394_why-utility-bills-are-rising-in-several-northeastern-states-this-winter.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/shutterstock_2482241625-300x194.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/shutterstock_2482241625-300x194.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Utilities</span><h4>Why Utility Bills Are Rising in Several Northeastern States This Winter</h4><p class="">February 16, 2026 &bull; Amanda Blankenship</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/16/10721382_5-dividend-stocks-retirees-are-favoring-for-steady-income-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/shutterstock_2212577443-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/shutterstock_2212577443-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Investing</span><h4>5 Dividend Stocks Retirees Are Favoring for Steady Income in 2026</h4><p class="">February 16, 2026 &bull; Amanda Blankenship</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/16/1059329_10-inspirational-quotes-from-presidents-on-money.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2024/01/shutterstock_2456882559-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2024/01/shutterstock_2456882559-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>Most People Know Their Faces, Not Their Words—10 Quotes From Presidents on U.S. Money</h4><p class="">February 16, 2026 &bull; Amanda Blankenship</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721121_grey-marriages-7-financial-secrets-couples-over-60-rarely-share-until-its-too-late.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-8790831-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-8790831-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Seniors</span><h4>Grey Marriages: 7 Financial Secrets Couples Over 60 Rarely Share Until It’s Too Late</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10720997_where-housing-still-feels-affordable-compared-with-the-rest-of-the-u-s.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-lamont-l-johnson-710717269-18221027-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-lamont-l-johnson-710717269-18221027-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Housing</span><h4>Where Housing Still Feels Affordable Compared With the Rest of the U.S.</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10720999_7-everyday-bills-rising-faster-than-inflation-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-nicola-barts-7926681-200x300.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-nicola-barts-7926681-200x300.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>7 Everyday Bills Rising Faster Than Inflation in 2026</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721001_5-medical-costs-seniors-still-pay-out-of-pocket-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-arda-kaykisiz-672105204-19976565-200x300.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-arda-kaykisiz-672105204-19976565-200x300.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Medical</span><h4>5 Medical Costs Seniors Still Pay Out-of-Pocket in 2026</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721003_8-subscriptions-seniors-forget-to-cancel-and-what-they-cost.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-6922181-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-6922181-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>8 Subscriptions Seniors Forget to Cancel — And What They Cost</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721015_irs-refund-delays-the-filing-errors-slowing-2026-checks.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-polina-tankilevitch-6927342-200x300.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-polina-tankilevitch-6927342-200x300.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>IRS Refund Delays: The Filing Errors Slowing 2026 Checks</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721017_7-hidden-fees-draining-senior-bank-accounts-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-karola-g-4386421-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-karola-g-4386421-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>7 Hidden Fees Draining Senior Bank Accounts in 2026</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10721019_the-7-states-where-property-taxes-are-hitting-retirees-hardest.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-james-lamorder-414047730-15999842-200x300.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-james-lamorder-414047730-15999842-200x300.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Retirement</span><h4>The 7 States Where Property Taxes Are Hitting Retirees Hardest</h4><p class="">February 15, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10720535_9-inflation-pressures-raising-senior-living-costs-before-march.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Inflation-Pressures-300x169.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Inflation-Pressures-300x169.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Personal Finance</span><h4>9 Inflation Pressures Raising Senior Living Costs Before March</h4><p class="">February 15, 2026 &bull; Catherine Reed</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10720536_ai-scam-alert-how-fraudsters-are-mimicking-family-voices-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Are-Mimicking-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Are-Mimicking-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">scams</span><h4>AI Scam Alert: How Fraudsters Are Mimicking Family Voices in 2026</h4><p class="">February 15, 2026 &bull; Catherine Reed</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/15/10720540_5-crimes-targeting-seniors-right-now-the-red-flags-you-cant-ignore.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Targeting-Seniors-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Targeting-Seniors-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">scams &amp; fraud</span><h4>5 Crimes Targeting Seniors Right Now — The Red Flags You Can’t Ignore</h4><p class="">February 15, 2026 &bull; Catherine Reed</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/14/10720994_5-social-security-records-experts-say-seniors-should-check-now.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-rdne-5921403-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-rdne-5921403-300x200.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">Retirement</span><h4>5 Social Security Records Experts Say Seniors Should Check Now</h4><p class="">February 14, 2026 &bull; Teri Monroe</p></div> </a></div><div class="box__item"> <a href="https://www.savingadvice.com/articles/2026/02/14/10720984_7-states-seeing-the-sharpest-utility-spikes-in-2026.html" data-name="Latest" class="box__link chome-link"><div class="box__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-padrinan-230518-300x225.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-padrinan-230518-300x225.jpg?strip=all" /></div><div class="box__text"> <span class="ntop__cat">home</span><h4>7 States Seeing the Sharpest Utility Spikes in 2026</h4><p class="">February 14, 2026 &bull; Teri Monroe</p></div> </a></div></div></div><div id="more-latest">Loading more articles...</div></div><div class="np"><div class="np__col trending-list"><div class="np__inner"><div class="np__title"><h2>Trending Posts</h2></div><div class="wpp-shortcode"><script type="application/json" data-id="wpp-shortcode-inline-js">{"title":"","limit":"4","offset":0,"range":"last30days","time_quantity":24,"time_unit":"hour","freshness":false,"order_by":"views","post_type":"post","pid":"","exclude":"","cat":"","taxonomy":"category","term_id":"","author":"","shorten_title":{"active":false,"length":0,"words":false},"post-excerpt":{"active":false,"length":0,"keep_format":false,"words":false},"thumbnail":{"active":true,"build":"manual","width":"300","height":"300"},"rating":false,"stats_tag":{"comment_count":false,"views":false,"author":false,"date":{"active":false,"format":"F j, Y"},"category":false,"taxonomy":{"active":false,"name":"category"}},"markup":{"custom_html":true,"wpp-start":"&lt;div class=&quot;np__feed&quot;&gt;","wpp-end":"&lt;\/div&gt;","title-start":"<h2>","title-end":"<\/h2>","post-html":"&lt;a data-id=&quot;{pid}&quot; data-view={views} href=&quot;{url}&quot; data-name=&quot;Trending&quot; class=&quot;np__item chome-link&quot;&gt;&lt;div class=&quot;np__img&quot;&gt;&lt;img src=&quot;{thumb_url}&quot; \/&gt;&lt;\/div&gt;&lt;div class=&quot;np__text&quot;&gt;&lt;h4&gt;{text_title}&lt;\/h4&gt;&lt;p class=&quot;np__date&quot;&gt;{date}&lt;\/p&gt;&lt;\/div&gt;&lt;\/a&gt;"},"theme":{"name":""}}</script><div class="wpp-shortcode-placeholder"></div></div><div class="asdf" style="display: none">14</div> <script>jQuery(document).ready(function(){
						setTimeout(() => {
							var trending_ids = []
							jQuery('.trending-list .np__item, .top-trending .ntop__title').each(function(){
								const el = jQuery(this)
								const trending_id = el.attr('data-id')
								trending_ids.push(trending_id)
							})
							console.log(trending_ids);
							jQuery.ajax({
								url: 'https://www.savingadvice.com/wp-admin/admin-ajax.php', // or example_ajax_obj.ajaxurl if using on frontend
								data: {
									'action': 'get_wpp_views',
									'trending_ids' : trending_ids
								},
								success:function(data) {
									// This outputs the result of the ajax request
									console.log('get_wpp', data);
									if(data){
										if(data.length > 0){
											const posts = JSON.parse(data);
											posts.map((p, index) => {
												console.log(p?.author_name, p);
												if(p?.author_name != 'Susan'){
													jQuery(`.trending-list [data-id="${p.id}"] .np__text`).append(`<span class="np__views">${p.views} views</span>`);
													jQuery(`.top-trending [data-id="${p.id}"]`).after(`<span class="np__views">${p.views} views</span>`);
												} else {
													jQuery(`[data-id="${p.id}"]`).remove();
												}
											})
										}
									}
								},
								error: function(errorThrown){
									console.log(errorThrown);
								}
							});  
						}, 5000);
					})</script> </div></div><div class="np__col"><div class="np__inner"><div class="np__title"><h2>Editor's Pick</h2></div><div class="np__feed"> <a href="https://www.savingadvice.com/articles/2025/12/30/1019727_365-day-money-challenge.html" data-name="Editor's Pick" class="np__item chome-link"><div class="np__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2015/01/365-day-money-challenge-2015-300x176.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2015/01/365-day-money-challenge-2015-300x176.jpg?strip=all" /></div><div class="np__text"><h4>365 Day Money Challenge, For New Years Or Anytime</h4><p class="np__date">December 30, 2025</p></div> </a> <a href="https://www.savingadvice.com/articles/2025/12/24/1018389_bills-in-your-wallet-worth-more-than-face-value.html" data-name="Editor's Pick" class="np__item chome-link"><div class="np__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2025/08/17-bills-worth-more-than-face-value-in-your-wallet-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2025/08/17-bills-worth-more-than-face-value-in-your-wallet-300x200.jpg?strip=all" /></div><div class="np__text"><h4>17 Bills Worth More Than Face Value Hiding in Your Wallet Right Now – Spot Them Easily</h4><p class="np__date">December 24, 2025</p></div> </a> <a href="https://www.savingadvice.com/articles/2025/10/20/1042902_the-best-place-to-hide-money-conversation-with-a-burglar.html" data-name="Editor's Pick" class="np__item chome-link"><div class="np__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2025/08/shutterstock_1174180648-1-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2025/08/shutterstock_1174180648-1-300x200.jpg?strip=all" /></div><div class="np__text"><h4>The Best Place To Hide Money: Conversations With A Burglar</h4><p class="np__date">October 20, 2025</p></div> </a></div></div></div></div><div class="new-com"><h2>The Latest From The Saving Advice Blogs</h2><div class="nc"><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>The Rainbow Bridge</h4><div class="nc__avatar"> <span>Monkey Mama*s Monkey Money  Blog</span></div></div><div class="nc__content"><div class="nc__date"> Mon - Feb 16 05:50pm</div><div class="nc__text"> My cat didn't make it.
It's never easy but this one is really hard.&nbsp; It was so completely out of left field.&nbsp; He h...</div> <a data-name="User Blogs" href="https://monkeymama.savingadvice.com/2026/02/16/the-rainbow-bridge_226727/" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Taxes filed, and deciding about an invit...</h4><div class="nc__avatar"> <span>Fiscal Fitness</span></div></div><div class="nc__content"><div class="nc__date"> Sun - Feb 15 11:58pm</div><div class="nc__text"> This weekend, I completed my own tax returns, as well as the return for a neighbor whose returns I have been doing for over a...</div> <a data-name="User Blogs" href="https://dido.savingadvice.com/2026/02/15/taxes-filed-and-deciding-about-an-invita_226726/" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>More spending to come</h4><div class="nc__avatar"> <span>Save More, Spend Less</span></div></div><div class="nc__content"><div class="nc__date"> Sun - Feb 15 06:24pm</div><div class="nc__text"> I had my tree guy over the other day to ask him to prune some rather large limbs of my enormous silver maple because they are...</div> <a data-name="User Blogs" href="https://patientsaver.savingadvice.com/2026/02/15/more-spending-to-come_226725/" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Foggy space</h4><div class="nc__avatar"> <span>Trying to keep Tabs on my finances</span></div></div><div class="nc__content"><div class="nc__date"> Sat - Feb 14 06:55am</div><div class="nc__text"> So I finally got a humidifier, and have been running for a few days.
While I normally would loathe making such a purchase, a...</div> <a data-name="User Blogs" href="https://tabs.savingadvice.com/2026/02/14/foggy-space_226722/" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Paid in Full</h4><div class="nc__avatar"> <span>Amber's Personal Finance Blog</span></div></div><div class="nc__content"><div class="nc__date"> Thu - Feb 12 08:59pm</div><div class="nc__text"> My HOA is now requiring that I replace my roof&mdash;when it rains, it really pours.
So I made a big decision: I went ahead ...</div> <a data-name="User Blogs" href="https://veronak.savingadvice.com/2026/02/12/paid-in-full_226721/" class="nc__button chome-link">VIEW POST</a></div></div></div></div></div><div class="new-com new-com--forum"><h2>The Latest From The Saving Advice Forums</h2><div class="nc nc--forum"><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Epstein?</h4></div><div class="nc__content"><div class="nc__date"> james.hendrickson &bull; 16 Feb 2026 18:53:36</div><div class="nc__text"> So, a lot of my friends are talking about the Epstein scandal - its like the general public is starting to catch on that the story is true and that a big portion of the elite of country were engaged in illegal acts.  I know its n...</div> <a data-name="Forums" href="https://www.savingadvice.com/forums/node/756202" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Your 401(k) Isn&#8217;t an Investment Pl...</h4></div><div class="nc__content"><div class="nc__date"> Cnon20 &bull; 16 Feb 2026 18:45:30</div><div class="nc__text"> https://money.com/401k-isnt-an-investment-plan/?xid=mcclatchy&amp;utm_source=mcclatchy&amp;utm_medium=rss_synd&amp;utm_content=tms_issue171...</div> <a data-name="Forums" href="https://www.savingadvice.com/forums/node/756113" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Let's talk supplements you take &amp; ho...</h4></div><div class="nc__content"><div class="nc__date"> QuarterMillionMan &bull; 16 Feb 2026 18:39:53</div><div class="nc__text"> I used to add these pills to smoothies but now I just blend it with water &amp; ice cream, multivitamins &amp; minerals, calcium, magnesium glycinate, vitamin D3, Flax oil, lactobacilus salivarius. I used to take liver pills, prot...</div> <a data-name="Forums" href="https://www.savingadvice.com/forums/node/751601" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>Does anyone do any collecting?</h4></div><div class="nc__content"><div class="nc__date"> bjl584 &bull; 16 Feb 2026 18:34:12</div><div class="nc__text"> Anyone here have any extensive collections of anything?
It could be something you consider as an investment or just something that you enjoy.  I personally have a small coin collection, a handful of Lionel trains, and some Legos f...</div> <a data-name="Forums" href="https://www.savingadvice.com/forums/node/755812" class="nc__button chome-link">VIEW POST</a></div></div></div><div class="nc__col"><div class="nc__item"><div class="nc__title"><h4>June Inflation Highest Since February, C...</h4></div><div class="nc__content"><div class="nc__date"> ua_guy &bull; 16 Feb 2026 18:20:16</div><div class="nc__text"> I'll just leave this here.  https://www.cbsnews.com/news/cpi-report-june-2025-inflation-trump-tariffs/...</div> <a data-name="Forums" href="https://www.savingadvice.com/forums/node/753499" class="nc__button chome-link">VIEW POST</a></div></div></div></div></div><div class="pbig"><div class="pbig__row"><div class="pbig__col"><div class="pbig__item"><h4>RETIREMENT AND PERSONAL FINANCE</h4><div class="pbig__feed"> <a data-name="Retirement and Personal Finance" href="https://www.savingadvice.com/articles/2026/02/16/1059329_10-inspirational-quotes-from-presidents-on-money.html" class="pbig__a chome-link"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2024/01/shutterstock_2456882559-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2024/01/shutterstock_2456882559-300x200.jpg?strip=all" /></div><div class="pbig__text"><h4>Most People Know Their Faces, Not Their Words—10 Quotes From Presidents on U.S. Money</h4><p class="pbig__date">February 16, 2026 &bull; Amanda Blankenship</p></div> </a> <a data-name="Retirement and Personal Finance" href="https://www.savingadvice.com/articles/2026/02/15/10720999_7-everyday-bills-rising-faster-than-inflation-in-2026.html" class="pbig__a chome-link pbig__a--other"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-nicola-barts-7926681-200x300.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-nicola-barts-7926681-200x300.jpg?strip=all" /></div><div class="pbig__text"><h4>7 Everyday Bills Rising Faster Than Inflation in 2026</h4><p class="pbig__date">February 15, 2026 &bull; Teri Monroe</p></div> </a> <a data-name="Retirement and Personal Finance" href="https://www.savingadvice.com/articles/2026/02/15/10721003_8-subscriptions-seniors-forget-to-cancel-and-what-they-cost.html" class="pbig__a chome-link pbig__a--other"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-6922181-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/pexels-kampus-6922181-300x200.jpg?strip=all" /></div><div class="pbig__text"><h4>8 Subscriptions Seniors Forget to Cancel — And What They Cost</h4><p class="pbig__date">February 15, 2026 &bull; Teri Monroe</p></div> </a></div></div></div><div class="pbig__col"><div class="pbig__item"><h4>SHOP SMART</h4><div class="pbig__feed"> <a data-name="Shop Smart" href="https://www.savingadvice.com/articles/2026/02/14/10720537_9-budget-adjustments-retirees-are-making-after-january.html" class="pbig__a chome-link"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Are-Making-After-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Are-Making-After-300x200.jpg?strip=all" /></div><div class="pbig__text"><h4>9 Budget Adjustments Retirees Are Making After January</h4><p class="pbig__date">February 14, 2026 &bull; Catherine Reed</p></div> </a> <a data-name="Shop Smart" href="https://www.savingadvice.com/articles/2026/02/05/10719020_8-household-expenses-retirees-say-are-no-longer-predictable.html" class="pbig__a chome-link pbig__a--other"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Retirees-Say-300x211.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/02/Retirees-Say-300x211.jpg?strip=all" /></div><div class="pbig__text"><h4>8 Household Expenses Retirees Say Are No Longer Predictable</h4><p class="pbig__date">February 5, 2026 &bull; Catherine Reed</p></div> </a> <a data-name="Shop Smart" href="https://www.savingadvice.com/articles/2026/01/31/10717893_before-january-ends-5-money-deadlines-that-quietly-reset-your-budget-on-february-1.html" class="pbig__a chome-link pbig__a--other"><div class="pbig__img"> <noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/01/January-Ends-300x200.jpg?strip=all" /></noscript><img class="lazyload" src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20210%20140%22%3E%3C/svg%3E' data-src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2026/01/January-Ends-300x200.jpg?strip=all" /></div><div class="pbig__text"><h4>Before January Ends: 5 Money Deadlines That Quietly Reset Your Budget on February 1</h4><p class="pbig__date">January 31, 2026 &bull; Catherine Reed</p></div> </a></div></div></div></div></div> <script>jQuery(document).ready(function(){
			
		});</script> <div class="home-bottom" style="display: none;"><div class="tools"><section id="text-12" class="widget widget_text"><div class="widget-wrap"><h3 class="widgettitle widget-title">Featured Tool</h3><div class="textwidget"><p><a href="/articles/2013/01/23/1013883_52-week-savings-challenge.html"><noscript><img src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2017/05/52week.png?strip=all" width="71px" height="76px" alt="52 week savings challenge" style="float:left; padding-right: 5px;"></noscript><img class="lazyload" src="https://etyb2wffn3d.exactdn.com/wp-content/uploads/2017/05/52week.png?strip=all" data-src="/wp-content/uploads/2017/05/52week.png" width="71px" height="76px" alt="52 week savings challenge" style="float:left; padding-right: 5px;"></a> Try out the <a href="/articles/2013/01/23/1013883_52-week-savings-challenge.html">52 Week Savings
 Challenge</a> for an easy way for any family to save over $1300.</p><p><a href="/forums/forum/financial-chit-chat/-52-week-savings-challenge">Try it out</a> and <a href="/articles/2013/01/23/1013883_52-week-savings-challenge.html">get help from others</a></p></div></div></section></div></div></div></main><aside class="sidebar sidebar-primary widget-area" role="complementary" aria-label="Primary Sidebar" id="genesis-sidebar-primary"><h2 class="genesis-sidebar-title screen-reader-text">Primary Sidebar</h2></aside></div></div><div class="nfoot"><div class="container"><div class="row align-items-center"><div class="col-md-9"><div class="nfoot__col nfoot__menu"><ul><li><a href="https://www.savingadvice.com/articles/" data-name="Bottom Link">Articles</a></li><li><a href="https://www.savingadvice.com/tips" data-name="Bottom Link">Tips</a></li><li><a href="https://www.savingadvice.com/articles/2018/12/13/1063125_ways-to-make-money-on-the-side.html" data-name="Bottom Link">Make Money</a></li><li><a href="https://www.savingadvice.com/articles/2024/12/02/10149341_a-good-credit-score-is-a-tool-for-your-personal-finances.html" data-name="Bottom Link">Credit Score Guide</a></li><li><a href="https://www.savingadvice.com/forums" data-name="Bottom Link">Forums</a></li><li><a href="https://www.savingadvice.com/blogs" data-name="Bottom Link">Blogs</a></li><li><a href="https://www.savingadvice.com/tools" data-name="Bottom Link">Tools</a></li><li><a href="https://www.savingadvice.com/about-us" data-name="Bottom Link">About</a></li><li><a href="https://www.savingadvice.com/contact-us" data-name="Bottom Link">Contact</a></li></ul></div></div><div class="col-md-3"><div class="nfoot__col nfoot__soc"><ul><li><a href="https://www.facebook.com/savingadvice/?v=wall" target="_blank" data-name="Bottom Social Media" class="fb-animate soc-icon"><i class="fab fa-facebook-f"></i></a></li><li><a href="https://www.instagram.com/savingadvice_/" target="_blank" data-name="Bottom Social Media" class="instagram-animate soc-icon"><i class="fab fa-instagram"></i></a></li><li><a href="https://twitter.com/savingadvice" target="_blank" data-name="Bottom Social Media" class="twitter-animate soc-icon"><i class="fab fa-twitter"></i></a></li><li><a href="https://www.pinterest.ph/savingadvice0190/" target="_blank" data-name="Bottom Social Media" class="pin-animate soc-icon"><i class="fab fa-pinterest"></i></a></li></ul></div></div></div></div></div><footer class="site-footer"><div class="wrap"><p></p><section class="mfoot" data-mfoot="123"><div class="container"><div class="row"><div class="col-md-6"><div class="mfoot__col mfoot__col--left"><h5>Subscribe to Our Newsletter</h5>  <script>// window.addEventListener('load', function() {
								// 	setTimeout(function() {
								// 		var link = document.createElement('link');
								// 		link.rel = 'stylesheet';
								// 		link.href = 'https://sibforms.com/forms/end-form/build/sib-styles.css';
								// 		document.head.appendChild(link);
								// 	}, 4000); // 4 seconds delay
								// });</script> <div><div id="sib-form-container" class="sib-form-container"><div id="error-message" class="sib-form-message-panel" style="font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;max-width:350px;"><div class="sib-form-message-panel__text sib-form-message-panel__text--center"> <svg viewbox="0 0 512 512" class="sib-icon sib-notification__icon"> <path d="M256 40c118.621 0 216 96.075 216 216 0 119.291-96.61 216-216 216-119.244 0-216-96.562-216-216 0-119.203 96.602-216 216-216m0-32C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm-11.49 120h22.979c6.823 0 12.274 5.682 11.99 12.5l-7 168c-.268 6.428-5.556 11.5-11.99 11.5h-8.979c-6.433 0-11.722-5.073-11.99-11.5l-7-168c-.283-6.818 5.167-12.5 11.99-12.5zM256 340c-15.464 0-28 12.536-28 28s12.536 28 28 28 28-12.536 28-28-12.536-28-28-28z" /> </svg> <span class="sib-form-message-panel__inner-text"> Your subscription could not be saved. Please try again. </span></div></div><div></div><div id="success-message" class="sib-form-message-panel" style="font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#085229; background-color:#e7faf0; border-radius:3px; border-color:#13ce66;max-width:350px;"><div class="sib-form-message-panel__text sib-form-message-panel__text--center"> <svg viewbox="0 0 512 512" class="sib-icon sib-notification__icon"> <path d="M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 464c-118.664 0-216-96.055-216-216 0-118.663 96.055-216 216-216 118.664 0 216 96.055 216 216 0 118.663-96.055 216-216 216zm141.63-274.961L217.15 376.071c-4.705 4.667-12.303 4.637-16.97-.068l-85.878-86.572c-4.667-4.705-4.637-12.303.068-16.97l8.52-8.451c4.705-4.667 12.303-4.637 16.97.068l68.976 69.533 163.441-162.13c4.705-4.667 12.303-4.637 16.97.068l8.451 8.52c4.668 4.705 4.637 12.303-.068 16.97z" /> </svg> <span class="sib-form-message-panel__inner-text"> Your subscription has been successful. </span></div></div><div></div><div><form id="sib-form" method="POST" action="https://cea54e9a.sibforms.com/serve/MUIFACQ8cgz1FP1YBK9njGptJnKXaiWCLIzMpI-29doNLlvHDmAXEC2lZTsyhMtpRr7vJijpW2ABWrkDsO9CpkbdzuHZIncIcFPQx_GWEambXlQurU8YYgOv1VMb2d00K47bYBQLe_LpF5NVZxeN1itYw5HcUIwm-GbDYRN0h9hyiTAunaig-3eJylIdpYu09AGK6fCDn-BAe6Cw" data-type="subscription"><div><div class=""><div class="form__entry entry_block"><div class="form__label-row"><div class="entry__field"> <input class="input" type="text" id="EMAIL" name="EMAIL" autocomplete="off" placeholder="EMAIL" data-required="true" required /></div></div> <label class="entry__error entry__error--primary" style="font-size:16px; text-align:left; font-family:Helvetica, sans-serif; color:#661d1d; background-color:#ffeded; border-radius:3px; border-color:#ff4949;"></label></div></div></div><div><div class="sib-form-block" style="text-align: right"> <button class="sib-form-block__button sib-form-block__button-with-loader" style="" form="sib-form" type="submit"> <svg class="icon clickable__icon progress-indicator__icon sib-hide-loader-icon" viewbox="0 0 512 512" style=""> <path d="M460.116 373.846l-20.823-12.022c-5.541-3.199-7.54-10.159-4.663-15.874 30.137-59.886 28.343-131.652-5.386-189.946-33.641-58.394-94.896-95.833-161.827-99.676C261.028 55.961 256 50.751 256 44.352V20.309c0-6.904 5.808-12.337 12.703-11.982 83.556 4.306 160.163 50.864 202.11 123.677 42.063 72.696 44.079 162.316 6.031 236.832-3.14 6.148-10.75 8.461-16.728 5.01z" /> </svg> SUBSCRIBE </button></div></div> <input type="text" name="email_address_check" value="" class="input--hidden"> <input type="hidden" name="locale" value="en"></form></div></div></div>  <script>window.REQUIRED_CODE_ERROR_MESSAGE = 'Please choose a country code';
								window.LOCALE = 'en';
								window.EMAIL_INVALID_MESSAGE = window.SMS_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
								window.REQUIRED_ERROR_MESSAGE = "This field cannot be left blank. ";
								window.GENERIC_INVALID_MESSAGE = "The information provided is invalid. Please review the field format and try again.";
								window.translation = {
									common: {
									selectedList: '{quantity} list selected',
									selectedLists: '{quantity} lists selected',
									selectedOption: '{quantity} selected',
									selectedOptions: '{quantity} selected',
									}
								};
								var AUTOHIDE = Boolean(0);</script> <script>window.addEventListener('load', function() {
									setTimeout(function() {
										// Inject stylesheet
										var css = document.createElement('link');
										css.rel = 'stylesheet';
										css.href = 'https://sibforms.com/forms/end-form/build/sib-styles.css';
										document.head.appendChild(css);

										// Inject script
										var js = document.createElement('script');
										js.src = 'https://sibforms.com/forms/end-form/build/main.js';
										js.defer = true;
										document.body.appendChild(js);
									}, 4000); // 4 seconds delay
								});</script> </div></div><div class="col-md-6"><div class="mfoot__col mfoot__col--right"> Copyright &#xA9;&nbsp;2026 SavingAdvice.com. All Rights Reserved.<div class="mfoot__menu"><ul><li><a href="https://www.savingadvice.com/privacy-policy/">Privacy Policy</a></li></ul></div></div></div></div></div></section></div></footer> <script>window.addEventListener('load', function() {
				setTimeout(function() {
					var link = document.createElement('link');
					link.rel = 'preload';
					link.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css';
					link.as = 'style';
					link.onload = function() { this.onload = null; this.rel = 'stylesheet'; };
					document.head.appendChild(link);

					var noscript = document.createElement('noscript');
					noscript.innerHTML = '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.0/css/all.min.css">';
					document.body.appendChild(noscript);
				}, 3000); // 3 seconds delay
			});</script> <script data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_4815ed2bfe0752a1d2bf81b2df3baaa1.js" /></div><script data-no-optimize='1' data-cfasync='false' id='cls-insertion-b676c16' data-type="lazy" data-src="data:text/javascript;base64,KGZ1bmN0aW9uKCl7d2luZG93LmFkdGhyaXZlQ0xTLmJ1aWxkRGF0ZT1gMjAyNi0wMi0xM2A7dmFyIGU9KGUsdCk9PigpPT4odHx8ZSgodD17ZXhwb3J0czp7fX0pLmV4cG9ydHMsdCksdC5leHBvcnRzKSx0PWUoKChlLHQpPT57dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuTWF0aD09PU1hdGgmJmV9O3QuZXhwb3J0cz1uKHR5cGVvZiBnbG9iYWxUaGlzPT1gb2JqZWN0YCYmZ2xvYmFsVGhpcyl8fG4odHlwZW9mIHdpbmRvdz09YG9iamVjdGAmJndpbmRvdyl8fG4odHlwZW9mIHNlbGY9PWBvYmplY3RgJiZzZWxmKXx8bih0eXBlb2YgZ2xvYmFsPT1gb2JqZWN0YCYmZ2xvYmFsKXx8bih0eXBlb2YgZT09YG9iamVjdGAmJmUpfHwoZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30pKCl8fEZ1bmN0aW9uKGByZXR1cm4gdGhpc2ApKCl9KSksbj1lKCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuISFlKCl9Y2F0Y2goZSl7cmV0dXJuITB9fX0pKSxyPWUoKChlLHQpPT57dC5leHBvcnRzPSFuKCkoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LDEse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pWzFdIT09N30pfSkpLGk9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9IW4oKShmdW5jdGlvbigpe3ZhciBlPShmdW5jdGlvbigpe30pLmJpbmQoKTtyZXR1cm4gdHlwZW9mIGUhPWBmdW5jdGlvbmB8fGUuaGFzT3duUHJvcGVydHkoYHByb3RvdHlwZWApfSl9KSksYT1lKCgoZSx0KT0+e3ZhciBuPWkoKSxyPUZ1bmN0aW9uLnByb3RvdHlwZS5jYWxsO3QuZXhwb3J0cz1uP3IuYmluZChyKTpmdW5jdGlvbigpe3JldHVybiByLmFwcGx5KHIsYXJndW1lbnRzKX19KSksbz1lKChlPT57dmFyIHQ9e30ucHJvcGVydHlJc0VudW1lcmFibGUsbj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO2UuZj1uJiYhdC5jYWxsKHsxOjJ9LDEpP2Z1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKTtyZXR1cm4hIXQmJnQuZW51bWVyYWJsZX06dH0pKSxzPWUoKChlLHQpPT57dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJue2VudW1lcmFibGU6IShlJjEpLGNvbmZpZ3VyYWJsZTohKGUmMiksd3JpdGFibGU6IShlJjQpLHZhbHVlOnR9fX0pKSxjPWUoKChlLHQpPT57dmFyIG49aSgpLHI9RnVuY3Rpb24ucHJvdG90eXBlLGE9ci5jYWxsLG89biYmci5iaW5kLmJpbmQoYSxhKTt0LmV4cG9ydHM9bj9vOmZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGUsYXJndW1lbnRzKX19fSkpLGw9ZSgoKGUsdCk9Pnt2YXIgbj1jKCkscj1uKHt9LnRvU3RyaW5nKSxpPW4oYGAuc2xpY2UpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShyKGUpLDgsLTEpfX0pKSx1PWUoKChlLHQpPT57dmFyIHI9YygpLGk9bigpLGE9bCgpLG89T2JqZWN0LHM9cihgYC5zcGxpdCk7dC5leHBvcnRzPWkoZnVuY3Rpb24oKXtyZXR1cm4hbyhgemApLnByb3BlcnR5SXNFbnVtZXJhYmxlKDApfSk/ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSk9PT1gU3RyaW5nYD9zKGUsYGApOm8oZSl9Om99KSksZD1lKCgoZSx0KT0+e3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZT09bnVsbH19KSksZj1lKCgoZSx0KT0+e3ZhciBuPWQoKSxyPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSl0aHJvdyBuZXcgcihgQ2FuJ3QgY2FsbCBtZXRob2Qgb24gYCtlKTtyZXR1cm4gZX19KSkscD1lKCgoZSx0KT0+e3ZhciBuPXUoKSxyPWYoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4ocihlKSl9fSkpLG09ZSgoKGUsdCk9Pnt2YXIgbj10eXBlb2YgZG9jdW1lbnQ9PWBvYmplY3RgJiZkb2N1bWVudC5hbGw7dC5leHBvcnRzPW49PT12b2lkIDAmJm4hPT12b2lkIDA/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfHxlPT09bn06ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPT1gZnVuY3Rpb25gfX0pKSxoPWUoKChlLHQpPT57dmFyIG49bSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PWBvYmplY3RgP2UhPT1udWxsOm4oZSl9fSkpLGc9ZSgoKGUsbik9Pnt2YXIgcj10KCksaT1tKCksYT1mdW5jdGlvbihlKXtyZXR1cm4gaShlKT9lOnZvaWQgMH07bi5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9hKHJbZV0pOnJbZV0mJnJbZV1bdF19fSkpLF89ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9YygpKHt9LmlzUHJvdG90eXBlT2YpfSkpLHY9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9dHlwZW9mIG5hdmlnYXRvcjxgdWAmJlN0cmluZyhuYXZpZ2F0b3IudXNlckFnZW50KXx8YGB9KSkseT1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPXYoKSxhPXIucHJvY2VzcyxvPXIuRGVubyxzPWEmJmEudmVyc2lvbnN8fG8mJm8udmVyc2lvbixjPXMmJnMudjgsbCx1O2MmJihsPWMuc3BsaXQoYC5gKSx1PWxbMF0+MCYmbFswXTw0PzE6KyhsWzBdK2xbMV0pKSwhdSYmaSYmKGw9aS5tYXRjaCgvRWRnZVwvKFxkKykvKSwoIWx8fGxbMV0+PTc0KSYmKGw9aS5tYXRjaCgvQ2hyb21lXC8oXGQrKS8pLGwmJih1PStsWzFdKSkpLG4uZXhwb3J0cz11fSkpLGI9ZSgoKGUscik9Pnt2YXIgaT15KCksYT1uKCksbz10KCkuU3RyaW5nO3IuZXhwb3J0cz0hIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMmJiFhKGZ1bmN0aW9uKCl7dmFyIGU9U3ltYm9sKGBzeW1ib2wgZGV0ZWN0aW9uYCk7cmV0dXJuIW8oZSl8fCEoT2JqZWN0KGUpaW5zdGFuY2VvZiBTeW1ib2wpfHwhU3ltYm9sLnNoYW0mJmkmJmk8NDF9KX0pKSx4PWUoKChlLHQpPT57dC5leHBvcnRzPWIoKSYmIVN5bWJvbC5zaGFtJiZ0eXBlb2YgU3ltYm9sLml0ZXJhdG9yPT1gc3ltYm9sYH0pKSxTPWUoKChlLHQpPT57dmFyIG49ZygpLHI9bSgpLGk9XygpLGE9eCgpLG89T2JqZWN0O3QuZXhwb3J0cz1hP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09YHN5bWJvbGB9OmZ1bmN0aW9uKGUpe3ZhciB0PW4oYFN5bWJvbGApO3JldHVybiByKHQpJiZpKHQucHJvdG90eXBlLG8oZSkpfX0pKSxDPWUoKChlLHQpPT57dmFyIG49U3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt0cnl7cmV0dXJuIG4oZSl9Y2F0Y2goZSl7cmV0dXJuYE9iamVjdGB9fX0pKSxlZT1lKCgoZSx0KT0+e3ZhciBuPW0oKSxyPUMoKSxpPVR5cGVFcnJvcjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7aWYobihlKSlyZXR1cm4gZTt0aHJvdyBuZXcgaShyKGUpK2AgaXMgbm90IGEgZnVuY3Rpb25gKX19KSksdGU9ZSgoKGUsdCk9Pnt2YXIgbj1lZSgpLHI9ZCgpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBpPWVbdF07cmV0dXJuIHIoaSk/dm9pZCAwOm4oaSl9fSkpLG5lPWUoKChlLHQpPT57dmFyIG49YSgpLHI9bSgpLGk9aCgpLG89VHlwZUVycm9yO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBhLHM7aWYodD09PWBzdHJpbmdgJiZyKGE9ZS50b1N0cmluZykmJiFpKHM9bihhLGUpKXx8cihhPWUudmFsdWVPZikmJiFpKHM9bihhLGUpKXx8dCE9PWBzdHJpbmdgJiZyKGE9ZS50b1N0cmluZykmJiFpKHM9bihhLGUpKSlyZXR1cm4gczt0aHJvdyBuZXcgbyhgQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlYCl9fSkpLHJlPWUoKChlLHQpPT57dC5leHBvcnRzPSExfSkpLHc9ZSgoKGUsbik9Pnt2YXIgcj10KCksaT1PYmplY3QuZGVmaW5lUHJvcGVydHk7bi5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dHJ5e2kocixlLHt2YWx1ZTp0LGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pfWNhdGNoKG4pe3JbZV09dH1yZXR1cm4gdH19KSksVD1lKCgoZSxuKT0+e3ZhciByPXJlKCksaT10KCksYT13KCksbz1gX19jb3JlLWpzX3NoYXJlZF9fYCxzPW4uZXhwb3J0cz1pW29dfHxhKG8se30pOyhzLnZlcnNpb25zfHwocy52ZXJzaW9ucz1bXSkpLnB1c2goe3ZlcnNpb246YDMuMzYuMWAsbW9kZTpyP2BwdXJlYDpgZ2xvYmFsYCxjb3B5cmlnaHQ6YMKpIDIwMTQtMjAyNCBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KWAsbGljZW5zZTpgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvYmxvYi92My4zNi4xL0xJQ0VOU0VgLHNvdXJjZTpgaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanNgfSl9KSksRT1lKCgoZSx0KT0+e3ZhciBuPVQoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbltlXXx8KG5bZV09dHx8e30pfX0pKSxpZT1lKCgoZSx0KT0+e3ZhciBuPWYoKSxyPU9iamVjdDt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHIobihlKSl9fSkpLEQ9ZSgoKGUsdCk9Pnt2YXIgbj1jKCkscj1pZSgpLGk9bih7fS5oYXNPd25Qcm9wZXJ0eSk7dC5leHBvcnRzPU9iamVjdC5oYXNPd258fGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkocihlKSx0KX19KSksTz1lKCgoZSx0KT0+e3ZhciBuPWMoKSxyPTAsaT1NYXRoLnJhbmRvbSgpLGE9bigxIC50b1N0cmluZyk7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybmBTeW1ib2woYCsoZT09PXZvaWQgMD9gYDplKStgKV9gK2EoKytyK2ksMzYpfX0pKSxhZT1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPUUoKSxhPUQoKSxvPU8oKSxzPWIoKSxjPXgoKSxsPXIuU3ltYm9sLHU9aShgd2tzYCksZD1jP2wuZm9yfHxsOmwmJmwud2l0aG91dFNldHRlcnx8bztuLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGEodSxlKXx8KHVbZV09cyYmYShsLGUpP2xbZV06ZChgU3ltYm9sLmArZSkpLHVbZV19fSkpLG9lPWUoKChlLHQpPT57dmFyIG49YSgpLHI9aCgpLGk9UygpLG89dGUoKSxzPW5lKCksYz1hZSgpLGw9VHlwZUVycm9yLHU9YyhgdG9QcmltaXRpdmVgKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZighcihlKXx8aShlKSlyZXR1cm4gZTt2YXIgYT1vKGUsdSksYztpZihhKXtpZih0PT09dm9pZCAwJiYodD1gZGVmYXVsdGApLGM9bihhLGUsdCksIXIoYyl8fGkoYykpcmV0dXJuIGM7dGhyb3cgbmV3IGwoYENhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZWApfXJldHVybiB0PT09dm9pZCAwJiYodD1gbnVtYmVyYCkscyhlLHQpfX0pKSxzZT1lKCgoZSx0KT0+e3ZhciBuPW9lKCkscj1TKCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxgc3RyaW5nYCk7cmV0dXJuIHIodCk/dDp0K2BgfX0pKSxjZT1lKCgoZSxuKT0+e3ZhciByPXQoKSxpPWgoKSxhPXIuZG9jdW1lbnQsbz1pKGEpJiZpKGEuY3JlYXRlRWxlbWVudCk7bi5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBvP2EuY3JlYXRlRWxlbWVudChlKTp7fX19KSksbGU9ZSgoKGUsdCk9Pnt2YXIgaT1yKCksYT1uKCksbz1jZSgpO3QuZXhwb3J0cz0haSYmIWEoZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KG8oYGRpdmApLGBhYCx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYSE9PTd9KX0pKSxrPWUoKGU9Pnt2YXIgdD1yKCksbj1hKCksaT1vKCksYz1zKCksbD1wKCksdT1zZSgpLGQ9RCgpLGY9bGUoKSxtPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7ZS5mPXQ/bTpmdW5jdGlvbihlLHQpe2lmKGU9bChlKSx0PXUodCksZil0cnl7cmV0dXJuIG0oZSx0KX1jYXRjaChlKXt9aWYoZChlLHQpKXJldHVybiBjKCFuKGkuZixlLHQpLGVbdF0pfX0pKSx1ZT1lKCgoZSx0KT0+e3ZhciBpPXIoKSxhPW4oKTt0LmV4cG9ydHM9aSYmYShmdW5jdGlvbigpe3JldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZnVuY3Rpb24oKXt9LGBwcm90b3R5cGVgLHt2YWx1ZTo0Mix3cml0YWJsZTohMX0pLnByb3RvdHlwZSE9PTQyfSl9KSksZGU9ZSgoKGUsdCk9Pnt2YXIgbj1oKCkscj1TdHJpbmcsaT1UeXBlRXJyb3I7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe2lmKG4oZSkpcmV0dXJuIGU7dGhyb3cgbmV3IGkocihlKStgIGlzIG5vdCBhbiBvYmplY3RgKX19KSksQT1lKChlPT57dmFyIHQ9cigpLG49bGUoKSxpPXVlKCksYT1kZSgpLG89c2UoKSxzPVR5cGVFcnJvcixjPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxsPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsdT1gZW51bWVyYWJsZWAsZD1gY29uZmlndXJhYmxlYCxmPWB3cml0YWJsZWA7ZS5mPXQ/aT9mdW5jdGlvbihlLHQsbil7aWYoYShlKSx0PW8odCksYShuKSx0eXBlb2YgZT09YGZ1bmN0aW9uYCYmdD09PWBwcm90b3R5cGVgJiZgdmFsdWVgaW4gbiYmZiBpbiBuJiYhbltmXSl7dmFyIHI9bChlLHQpO3ImJnJbZl0mJihlW3RdPW4udmFsdWUsbj17Y29uZmlndXJhYmxlOmQgaW4gbj9uW2RdOnJbZF0sZW51bWVyYWJsZTp1IGluIG4/blt1XTpyW3VdLHdyaXRhYmxlOiExfSl9cmV0dXJuIGMoZSx0LG4pfTpjOmZ1bmN0aW9uKGUsdCxyKXtpZihhKGUpLHQ9byh0KSxhKHIpLG4pdHJ5e3JldHVybiBjKGUsdCxyKX1jYXRjaChlKXt9aWYoYGdldGBpbiByfHxgc2V0YGluIHIpdGhyb3cgbmV3IHMoYEFjY2Vzc29ycyBub3Qgc3VwcG9ydGVkYCk7cmV0dXJuYHZhbHVlYGluIHImJihlW3RdPXIudmFsdWUpLGV9fSkpLGZlPWUoKChlLHQpPT57dmFyIG49cigpLGk9QSgpLGE9cygpO3QuZXhwb3J0cz1uP2Z1bmN0aW9uKGUsdCxuKXtyZXR1cm4gaS5mKGUsdCxhKDEsbikpfTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGVbdF09bixlfX0pKSxwZT1lKCgoZSx0KT0+e3ZhciBuPXIoKSxpPUQoKSxhPUZ1bmN0aW9uLnByb3RvdHlwZSxvPW4mJk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iscz1pKGEsYG5hbWVgKTt0LmV4cG9ydHM9e0VYSVNUUzpzLFBST1BFUjpzJiYoZnVuY3Rpb24oKXt9KS5uYW1lPT09YHNvbWV0aGluZ2AsQ09ORklHVVJBQkxFOnMmJighbnx8biYmbyhhLGBuYW1lYCkuY29uZmlndXJhYmxlKX19KSksbWU9ZSgoKGUsdCk9Pnt2YXIgbj1jKCkscj1tKCksaT1UKCksYT1uKEZ1bmN0aW9uLnRvU3RyaW5nKTtyKGkuaW5zcGVjdFNvdXJjZSl8fChpLmluc3BlY3RTb3VyY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSl9KSx0LmV4cG9ydHM9aS5pbnNwZWN0U291cmNlfSkpLGhlPWUoKChlLG4pPT57dmFyIHI9dCgpLGk9bSgpLGE9ci5XZWFrTWFwO24uZXhwb3J0cz1pKGEpJiYvbmF0aXZlIGNvZGUvLnRlc3QoU3RyaW5nKGEpKX0pKSxnZT1lKCgoZSx0KT0+e3ZhciBuPUUoKSxyPU8oKSxpPW4oYGtleXNgKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGlbZV18fChpW2VdPXIoZSkpfX0pKSxqPWUoKChlLHQpPT57dC5leHBvcnRzPXt9fSkpLF9lPWUoKChlLG4pPT57dmFyIHI9aGUoKSxpPXQoKSxhPWgoKSxvPWZlKCkscz1EKCksYz1UKCksbD1nZSgpLHU9aigpLGQ9YE9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkYCxmPWkuVHlwZUVycm9yLHA9aS5XZWFrTWFwLG0sZyxfLHY9ZnVuY3Rpb24oZSl7cmV0dXJuIF8oZSk/ZyhlKTptKGUse30pfSx5PWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXt2YXIgbjtpZighYSh0KXx8KG49Zyh0KSkudHlwZSE9PWUpdGhyb3cgbmV3IGYoYEluY29tcGF0aWJsZSByZWNlaXZlciwgYCtlK2AgcmVxdWlyZWRgKTtyZXR1cm4gbn19O2lmKHJ8fGMuc3RhdGUpe3ZhciBiPWMuc3RhdGV8fChjLnN0YXRlPW5ldyBwKTtiLmdldD1iLmdldCxiLmhhcz1iLmhhcyxiLnNldD1iLnNldCxtPWZ1bmN0aW9uKGUsdCl7aWYoYi5oYXMoZSkpdGhyb3cgbmV3IGYoZCk7cmV0dXJuIHQuZmFjYWRlPWUsYi5zZXQoZSx0KSx0fSxnPWZ1bmN0aW9uKGUpe3JldHVybiBiLmdldChlKXx8e319LF89ZnVuY3Rpb24oZSl7cmV0dXJuIGIuaGFzKGUpfX1lbHNle3ZhciB4PWwoYHN0YXRlYCk7dVt4XT0hMCxtPWZ1bmN0aW9uKGUsdCl7aWYocyhlLHgpKXRocm93IG5ldyBmKGQpO3JldHVybiB0LmZhY2FkZT1lLG8oZSx4LHQpLHR9LGc9ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSx4KT9lW3hdOnt9fSxfPWZ1bmN0aW9uKGUpe3JldHVybiBzKGUseCl9fW4uZXhwb3J0cz17c2V0Om0sZ2V0OmcsaGFzOl8sZW5mb3JjZTp2LGdldHRlckZvcjp5fX0pKSx2ZT1lKCgoZSx0KT0+e3ZhciBpPWMoKSxhPW4oKSxvPW0oKSxzPUQoKSxsPXIoKSx1PXBlKCkuQ09ORklHVVJBQkxFLGQ9bWUoKSxmPV9lKCkscD1mLmVuZm9yY2UsaD1mLmdldCxnPVN0cmluZyxfPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSx2PWkoYGAuc2xpY2UpLHk9aShgYC5yZXBsYWNlKSxiPWkoW10uam9pbikseD1sJiYhYShmdW5jdGlvbigpe3JldHVybiBfKGZ1bmN0aW9uKCl7fSxgbGVuZ3RoYCx7dmFsdWU6OH0pLmxlbmd0aCE9PTh9KSxTPVN0cmluZyhTdHJpbmcpLnNwbGl0KGBTdHJpbmdgKSxDPXQuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7dihnKHQpLDAsNyk9PT1gU3ltYm9sKGAmJih0PWBbYCt5KGcodCksL15TeW1ib2xcKChbXildKilcKS4qJC8sYCQxYCkrYF1gKSxuJiZuLmdldHRlciYmKHQ9YGdldCBgK3QpLG4mJm4uc2V0dGVyJiYodD1gc2V0IGArdCksKCFzKGUsYG5hbWVgKXx8dSYmZS5uYW1lIT09dCkmJihsP18oZSxgbmFtZWAse3ZhbHVlOnQsY29uZmlndXJhYmxlOiEwfSk6ZS5uYW1lPXQpLHgmJm4mJnMobixgYXJpdHlgKSYmZS5sZW5ndGghPT1uLmFyaXR5JiZfKGUsYGxlbmd0aGAse3ZhbHVlOm4uYXJpdHl9KTt0cnl7biYmcyhuLGBjb25zdHJ1Y3RvcmApJiZuLmNvbnN0cnVjdG9yP2wmJl8oZSxgcHJvdG90eXBlYCx7d3JpdGFibGU6ITF9KTplLnByb3RvdHlwZSYmKGUucHJvdG90eXBlPXZvaWQgMCl9Y2F0Y2goZSl7fXZhciByPXAoZSk7cmV0dXJuIHMocixgc291cmNlYCl8fChyLnNvdXJjZT1iKFMsdHlwZW9mIHQ9PWBzdHJpbmdgP3Q6YGApKSxlfTtGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc9QyhmdW5jdGlvbigpe3JldHVybiBvKHRoaXMpJiZoKHRoaXMpLnNvdXJjZXx8ZCh0aGlzKX0sYHRvU3RyaW5nYCl9KSkseWU9ZSgoKGUsdCk9Pnt2YXIgbj1tKCkscj1BKCksaT12ZSgpLGE9dygpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQsbyxzKXtzfHwocz17fSk7dmFyIGM9cy5lbnVtZXJhYmxlLGw9cy5uYW1lPT09dm9pZCAwP3Q6cy5uYW1lO2lmKG4obykmJmkobyxsLHMpLHMuZ2xvYmFsKWM/ZVt0XT1vOmEodCxvKTtlbHNle3RyeXtzLnVuc2FmZT9lW3RdJiYoYz0hMCk6ZGVsZXRlIGVbdF19Y2F0Y2goZSl7fWM/ZVt0XT1vOnIuZihlLHQse3ZhbHVlOm8sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6IXMubm9uQ29uZmlndXJhYmxlLHdyaXRhYmxlOiFzLm5vbldyaXRhYmxlfSl9cmV0dXJuIGV9fSkpLGJlPWUoKChlLHQpPT57dmFyIG49TWF0aC5jZWlsLHI9TWF0aC5mbG9vcjt0LmV4cG9ydHM9TWF0aC50cnVuY3x8ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuKHQ+MD9yOm4pKHQpfX0pKSxNPWUoKChlLHQpPT57dmFyIG49YmUoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9K2U7cmV0dXJuIHQhPT10fHx0PT09MD8wOm4odCl9fSkpLHhlPWUoKChlLHQpPT57dmFyIG49TSgpLHI9TWF0aC5tYXgsaT1NYXRoLm1pbjt0LmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgYT1uKGUpO3JldHVybiBhPDA/cihhK3QsMCk6aShhLHQpfX0pKSxTZT1lKCgoZSx0KT0+e3ZhciBuPU0oKSxyPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1uKGUpO3JldHVybiB0PjA/cih0LDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSkpLENlPWUoKChlLHQpPT57dmFyIG49U2UoKTt0LmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZS5sZW5ndGgpfX0pKSx3ZT1lKCgoZSx0KT0+e3ZhciBuPXAoKSxyPXhlKCksaT1DZSgpLGE9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQsYSxvKXt2YXIgcz1uKHQpLGM9aShzKTtpZihjPT09MClyZXR1cm4hZSYmLTE7dmFyIGw9cihvLGMpLHU7aWYoZSYmYSE9PWEpe2Zvcig7Yz5sOylpZih1PXNbbCsrXSx1IT09dSlyZXR1cm4hMH1lbHNlIGZvcig7Yz5sO2wrKylpZigoZXx8bCBpbiBzKSYmc1tsXT09PWEpcmV0dXJuIGV8fGx8fDA7cmV0dXJuIWUmJi0xfX07dC5leHBvcnRzPXtpbmNsdWRlczphKCEwKSxpbmRleE9mOmEoITEpfX0pKSxUZT1lKCgoZSx0KT0+e3ZhciBuPWMoKSxyPUQoKSxpPXAoKSxhPXdlKCkuaW5kZXhPZixvPWooKSxzPW4oW10ucHVzaCk7dC5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIG49aShlKSxjPTAsbD1bXSx1O2Zvcih1IGluIG4pIXIobyx1KSYmcihuLHUpJiZzKGwsdSk7Zm9yKDt0Lmxlbmd0aD5jOylyKG4sdT10W2MrK10pJiYofmEobCx1KXx8cyhsLHUpKTtyZXR1cm4gbH19KSksRWU9ZSgoKGUsdCk9Pnt0LmV4cG9ydHM9W2Bjb25zdHJ1Y3RvcmAsYGhhc093blByb3BlcnR5YCxgaXNQcm90b3R5cGVPZmAsYHByb3BlcnR5SXNFbnVtZXJhYmxlYCxgdG9Mb2NhbGVTdHJpbmdgLGB0b1N0cmluZ2AsYHZhbHVlT2ZgXX0pKSxEZT1lKChlPT57dmFyIHQ9VGUoKSxuPUVlKCkuY29uY2F0KGBsZW5ndGhgLGBwcm90b3R5cGVgKTtlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKGUpe3JldHVybiB0KGUsbil9fSkpLE9lPWUoKGU9PntlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30pKSxOPWUoKChlLHQpPT57dmFyIG49ZygpLHI9YygpLGk9RGUoKSxhPU9lKCksbz1kZSgpLHM9cihbXS5jb25jYXQpO3QuZXhwb3J0cz1uKGBSZWZsZWN0YCxgb3duS2V5c2ApfHxmdW5jdGlvbihlKXt2YXIgdD1pLmYobyhlKSksbj1hLmY7cmV0dXJuIG4/cyh0LG4oZSkpOnR9fSkpLGtlPWUoKChlLHQpPT57dmFyIG49RCgpLHI9TigpLGk9aygpLGE9QSgpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQsbyl7Zm9yKHZhciBzPXIodCksYz1hLmYsbD1pLmYsdT0wO3U8cy5sZW5ndGg7dSsrKXt2YXIgZD1zW3VdOyFuKGUsZCkmJiEobyYmbihvLGQpKSYmYyhlLGQsbCh0LGQpKX19fSkpLEFlPWUoKChlLHQpPT57dmFyIHI9bigpLGk9bSgpLGE9LyN8XC5wcm90b3R5cGVcLi8sbz1mdW5jdGlvbihlLHQpe3ZhciBuPWNbcyhlKV07cmV0dXJuIG49PT11PyEwOm49PT1sPyExOmkodCk/cih0KTohIXR9LHM9by5ub3JtYWxpemU9ZnVuY3Rpb24oZSl7cmV0dXJuIFN0cmluZyhlKS5yZXBsYWNlKGEsYC5gKS50b0xvd2VyQ2FzZSgpfSxjPW8uZGF0YT17fSxsPW8uTkFUSVZFPWBOYCx1PW8uUE9MWUZJTEw9YFBgO3QuZXhwb3J0cz1vfSkpLGplPWUoKChlLG4pPT57dmFyIHI9dCgpLGk9aygpLmYsYT1mZSgpLG89eWUoKSxzPXcoKSxjPWtlKCksbD1BZSgpO24uZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciBuPWUudGFyZ2V0LHU9ZS5nbG9iYWwsZD1lLnN0YXQsZixwPXU/cjpkP3Jbbl18fHMobix7fSk6cltuXSYmcltuXS5wcm90b3R5cGUsbSxoLGcsXztpZihwKWZvcihtIGluIHQpe2lmKGc9dFttXSxlLmRvbnRDYWxsR2V0U2V0PyhfPWkocCxtKSxoPV8mJl8udmFsdWUpOmg9cFttXSxmPWwodT9tOm4rKGQ/YC5gOmAjYCkrbSxlLmZvcmNlZCksIWYmJmghPT12b2lkIDApe2lmKHR5cGVvZiBnPT10eXBlb2YgaCljb250aW51ZTtjKGcsaCl9KGUuc2hhbXx8aCYmaC5zaGFtKSYmYShnLGBzaGFtYCwhMCksbyhwLG0sZyxlKX19fSkpLE1lPWUoKChlLHQpPT57dmFyIG49cigpLGk9QSgpLGE9cygpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7bj9pLmYoZSx0LGEoMCxyKSk6ZVt0XT1yfX0pKSxOZT1lKCgoKT0+e3ZhciBlPWplKCksdD1yKCksbj1OKCksaT1wKCksYT1rKCksbz1NZSgpO2Uoe3RhcmdldDpgT2JqZWN0YCxzdGF0OiEwLHNoYW06IXR9LHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1pKGUpLHI9YS5mLHM9bih0KSxjPXt9LGw9MCx1LGQ7cy5sZW5ndGg+bDspZD1yKHQsdT1zW2wrK10pLGQhPT12b2lkIDAmJm8oYyx1LGQpO3JldHVybiBjfX0pfSkpLFBlPWUoKChlLG4pPT57bi5leHBvcnRzPXQoKX0pKTtlKCgoZSx0KT0+e05lKCksdC5leHBvcnRzPVBlKCkuT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnN9KSkoKTtsZXQgUD17QmVsb3dfUG9zdF8xOmBCZWxvd19Qb3N0XzFgLEJlbG93X1Bvc3Q6YEJlbG93X1Bvc3RgLENvbnRlbnQ6YENvbnRlbnRgLENvbnRlbnRfMTpgQ29udGVudF8xYCxDb250ZW50XzI6YENvbnRlbnRfMmAsQ29udGVudF8zOmBDb250ZW50XzNgLENvbnRlbnRfNDpgQ29udGVudF80YCxDb250ZW50XzU6YENvbnRlbnRfNWAsQ29udGVudF82OmBDb250ZW50XzZgLENvbnRlbnRfNzpgQ29udGVudF83YCxDb250ZW50Xzg6YENvbnRlbnRfOGAsQ29udGVudF85OmBDb250ZW50XzlgLFJlY2lwZTpgUmVjaXBlYCxSZWNpcGVfMTpgUmVjaXBlXzFgLFJlY2lwZV8yOmBSZWNpcGVfMmAsUmVjaXBlXzM6YFJlY2lwZV8zYCxSZWNpcGVfNDpgUmVjaXBlXzRgLFJlY2lwZV81OmBSZWNpcGVfNWAsTmF0aXZlX1JlY2lwZTpgTmF0aXZlX1JlY2lwZWAsRm9vdGVyXzE6YEZvb3Rlcl8xYCxGb290ZXI6YEZvb3RlcmAsSGVhZGVyXzE6YEhlYWRlcl8xYCxIZWFkZXJfMjpgSGVhZGVyXzJgLEhlYWRlcjpgSGVhZGVyYCxTaWRlYmFyXzE6YFNpZGViYXJfMWAsU2lkZWJhcl8yOmBTaWRlYmFyXzJgLFNpZGViYXJfMzpgU2lkZWJhcl8zYCxTaWRlYmFyXzQ6YFNpZGViYXJfNGAsU2lkZWJhcl81OmBTaWRlYmFyXzVgLFNpZGViYXJfOTpgU2lkZWJhcl85YCxTaWRlYmFyOmBTaWRlYmFyYCxJbnRlcnN0aXRpYWxfMTpgSW50ZXJzdGl0aWFsXzFgLEludGVyc3RpdGlhbDpgSW50ZXJzdGl0aWFsYCxWaWRlb19TdGlja3lPdXRzdHJlYW1fMTpgVmlkZW9fU3RpY2t5T3V0c3RyZWFtXzFgLFZpZGVvX1N0aWNreU91dHN0cmVhbTpgVmlkZW9fU3RpY2t5T3V0c3RyZWFtYCxWaWRlb19TdGlja3lJbnN0cmVhbTpgVmlkZW9fU3RpY2t5SW5zdHJlYW1gLFNwb25zb3JfVGlsZTpgU3BvbnNvcl9UaWxlYH0sRmU9W2BzaXRlSWRgLGBzaXRlTmFtZWAsYGFkT3B0aW9uc2AsYGJyZWFrcG9pbnRzYCxgYWRVbml0c2BdLEllPShlLHQ9RmUpPT57aWYoIWUpcmV0dXJuIHdpbmRvdy5hZHRocml2ZUNMUyYmKHdpbmRvdy5hZHRocml2ZUNMUy5kaXNhYmxlZD0hMCksITE7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspaWYoIWVbdFtuXV0pcmV0dXJuIHdpbmRvdy5hZHRocml2ZUNMUyYmKHdpbmRvdy5hZHRocml2ZUNMUy5kaXNhYmxlZD0hMCksITE7cmV0dXJuITB9LExlPSgpPT53aW5kb3cuYWR0aHJpdmVDTFM7ZnVuY3Rpb24gRihlKXsiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2YiO3JldHVybiBGPXR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PWBzeW1ib2xgP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBTeW1ib2w9PWBmdW5jdGlvbmAmJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlP2BzeW1ib2xgOnR5cGVvZiBlfSxGKGUpfWZ1bmN0aW9uIFJlKGUsdCl7aWYoRihlKSE9YG9iamVjdGB8fCFlKXJldHVybiBlO3ZhciBuPWVbU3ltYm9sLnRvUHJpbWl0aXZlXTtpZihuIT09dm9pZCAwKXt2YXIgcj1uLmNhbGwoZSx0fHxgZGVmYXVsdGApO2lmKEYocikhPWBvYmplY3RgKXJldHVybiByO3Rocm93IFR5cGVFcnJvcihgQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5gKX1yZXR1cm4odD09PWBzdHJpbmdgP1N0cmluZzpOdW1iZXIpKGUpfWZ1bmN0aW9uIHplKGUpe3ZhciB0PVJlKGUsYHN0cmluZ2ApO3JldHVybiBGKHQpPT1gc3ltYm9sYD90OnQrYGB9ZnVuY3Rpb24gSShlLHQsbil7cmV0dXJuKHQ9emUodCkpaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9dmFyIEJlPWNsYXNze2NvbnN0cnVjdG9yKCl7SSh0aGlzLGBfY2xzR2xvYmFsRGF0YWAsTGUoKSl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4hIXRoaXMuX2Nsc0dsb2JhbERhdGEmJiEhdGhpcy5fY2xzR2xvYmFsRGF0YS5zaXRlQWRzJiZJZSh0aGlzLl9jbHNHbG9iYWxEYXRhLnNpdGVBZHMpfWdldCBlcnJvcigpe3JldHVybiEhKHRoaXMuX2Nsc0dsb2JhbERhdGEmJnRoaXMuX2Nsc0dsb2JhbERhdGEuZXJyb3IpfXNldCBzaXRlQWRzKGUpe3RoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUFkcz1lfWdldCBzaXRlQWRzKCl7cmV0dXJuIHRoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUFkc31zZXQgZGlzYWJsZUFkcyhlKXt0aGlzLl9jbHNHbG9iYWxEYXRhLmRpc2FibGVBZHM9ZX1nZXQgZGlzYWJsZUFkcygpe3JldHVybiB0aGlzLl9jbHNHbG9iYWxEYXRhLmRpc2FibGVBZHN9Z2V0IGVuYWJsZWRMb2NhdGlvbnMoKXtyZXR1cm5bUC5CZWxvd19Qb3N0LFAuQ29udGVudCxQLlJlY2lwZSxQLlNpZGViYXJdfWdldCBpbmplY3RlZEZyb21QbHVnaW4oKXtyZXR1cm4gdGhpcy5fY2xzR2xvYmFsRGF0YS5pbmplY3RlZEZyb21QbHVnaW59c2V0IGluamVjdGVkRnJvbVBsdWdpbihlKXt0aGlzLl9jbHNHbG9iYWxEYXRhLmluamVjdGVkRnJvbVBsdWdpbj1lfWdldCBpbmplY3RlZEZyb21TaXRlQWRzKCl7cmV0dXJuIHRoaXMuX2Nsc0dsb2JhbERhdGEuaW5qZWN0ZWRGcm9tU2l0ZUFkc31zZXQgaW5qZWN0ZWRGcm9tU2l0ZUFkcyhlKXt0aGlzLl9jbHNHbG9iYWxEYXRhLmluamVjdGVkRnJvbVNpdGVBZHM9ZX1zZXRJbmplY3RlZFNsb3RzKGUpe3RoaXMuX2Nsc0dsb2JhbERhdGEuaW5qZWN0ZWRTbG90cz10aGlzLl9jbHNHbG9iYWxEYXRhLmluamVjdGVkU2xvdHN8fFtdLHRoaXMuX2Nsc0dsb2JhbERhdGEuaW5qZWN0ZWRTbG90cy5wdXNoKGUpfWdldCBpbmplY3RlZFNsb3RzKCl7cmV0dXJuIHRoaXMuX2Nsc0dsb2JhbERhdGEuaW5qZWN0ZWRTbG90c31zZXRJbmplY3RlZFZpZGVvU2xvdHMoZSl7dGhpcy5fY2xzR2xvYmFsRGF0YS5pbmplY3RlZFZpZGVvU2xvdHM9dGhpcy5fY2xzR2xvYmFsRGF0YS5pbmplY3RlZFZpZGVvU2xvdHN8fFtdLHRoaXMuX2Nsc0dsb2JhbERhdGEuaW5qZWN0ZWRWaWRlb1Nsb3RzLnB1c2goZSl9Z2V0IGluamVjdGVkVmlkZW9TbG90cygpe3JldHVybiB0aGlzLl9jbHNHbG9iYWxEYXRhLmluamVjdGVkVmlkZW9TbG90c31zZXRFeHBlcmltZW50KGUsdCxuPSExKXt0aGlzLl9jbHNHbG9iYWxEYXRhLmV4cGVyaW1lbnRzPXRoaXMuX2Nsc0dsb2JhbERhdGEuZXhwZXJpbWVudHN8fHt9LHRoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUV4cGVyaW1lbnRzPXRoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUV4cGVyaW1lbnRzfHx7fTtsZXQgcj1uP3RoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUV4cGVyaW1lbnRzOnRoaXMuX2Nsc0dsb2JhbERhdGEuZXhwZXJpbWVudHM7cltlXT10fWdldEV4cGVyaW1lbnQoZSx0PSExKXtsZXQgbj10P3RoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUV4cGVyaW1lbnRzOnRoaXMuX2Nsc0dsb2JhbERhdGEuZXhwZXJpbWVudHM7cmV0dXJuIG4mJm5bZV19c2V0V2VpZ2h0ZWRDaG9pY2VFeHBlcmltZW50KGUsdCxuPSExKXt0aGlzLl9jbHNHbG9iYWxEYXRhLmV4cGVyaW1lbnRzV2VpZ2h0ZWRDaG9pY2U9dGhpcy5fY2xzR2xvYmFsRGF0YS5leHBlcmltZW50c1dlaWdodGVkQ2hvaWNlfHx7fSx0aGlzLl9jbHNHbG9iYWxEYXRhLnNpdGVFeHBlcmltZW50c1dlaWdodGVkQ2hvaWNlPXRoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUV4cGVyaW1lbnRzV2VpZ2h0ZWRDaG9pY2V8fHt9O2xldCByPW4/dGhpcy5fY2xzR2xvYmFsRGF0YS5zaXRlRXhwZXJpbWVudHNXZWlnaHRlZENob2ljZTp0aGlzLl9jbHNHbG9iYWxEYXRhLmV4cGVyaW1lbnRzV2VpZ2h0ZWRDaG9pY2U7cltlXT10fWdldFdlaWdodGVkQ2hvaWNlRXhwZXJpbWVudChlLHQ9ITEpe3ZhciBuLHI7bGV0IGk9dD8obj10aGlzLl9jbHNHbG9iYWxEYXRhKT09bnVsbD92b2lkIDA6bi5zaXRlRXhwZXJpbWVudHNXZWlnaHRlZENob2ljZToocj10aGlzLl9jbHNHbG9iYWxEYXRhKT09bnVsbD92b2lkIDA6ci5leHBlcmltZW50c1dlaWdodGVkQ2hvaWNlO3JldHVybiBpJiZpW2VdfWdldCBidWNrZXQoKXtyZXR1cm4gdGhpcy5fY2xzR2xvYmFsRGF0YS5idWNrZXR9c2V0IHZpZGVvRGlzYWJsZWRGcm9tUGx1Z2luKGUpe3RoaXMuX2Nsc0dsb2JhbERhdGEudmlkZW9EaXNhYmxlZEZyb21QbHVnaW49ZX1nZXQgdmlkZW9EaXNhYmxlZEZyb21QbHVnaW4oKXtyZXR1cm4gdGhpcy5fY2xzR2xvYmFsRGF0YS52aWRlb0Rpc2FibGVkRnJvbVBsdWdpbn1zZXQgdGFyZ2V0RGVuc2l0eUxvZyhlKXt0aGlzLl9jbHNHbG9iYWxEYXRhLnRhcmdldERlbnNpdHlMb2c9ZX1nZXQgdGFyZ2V0RGVuc2l0eUxvZygpe3JldHVybiB0aGlzLl9jbHNHbG9iYWxEYXRhLnRhcmdldERlbnNpdHlMb2d9Z2V0IHJlbW92ZVZpZGVvVGl0bGVXcmFwcGVyKCl7cmV0dXJuIHRoaXMuX2Nsc0dsb2JhbERhdGEuc2l0ZUFkcy5hZE9wdGlvbnMucmVtb3ZlVmlkZW9UaXRsZVdyYXBwZXJ9fTtsZXQgTD1lPT57bGV0IHQ9e307cmV0dXJuIGZ1bmN0aW9uKC4uLm4pe2xldCByPUpTT04uc3RyaW5naWZ5KG4pO2lmKHIgaW4gdClyZXR1cm4gdFtyXTtsZXQgaT1lLmFwcGx5KHRoaXMsbik7cmV0dXJuIHRbcl09aSxpfX0sUj1MKCgpPT57bGV0IGU9bmF2aWdhdG9yLnVzZXJBZ2VudCx0PS9UYWJsZXR8aVBhZHxQbGF5Ym9va3xOb29rfHdlYk9TfEtpbmRsZXxBbmRyb2lkICg/IS4qTW9iaWxlKS4qU2FmYXJpfENyT1MvaS50ZXN0KGUpO3JldHVybi9Nb2JpfGlQKGhvbmV8b2QpfE9wZXJhIE1pbmkvaS50ZXN0KGUpJiYhdH0pO3ZhciB6LEI9Y2xhc3N7c3RhdGljIF9zY2hlZHVsZVZpZXdwb3J0VXBkYXRlKCl7dGhpcy5fcmFmSWQ9PT1udWxsJiYodGhpcy5fcmFmSWQ9d2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+e3RoaXMuX3JhZklkPW51bGwsdGhpcy5fdXBkYXRlVmlld3BvcnRSZWN0cygpfSkpfXN0YXRpYyBfdXBkYXRlVmlld3BvcnRSZWN0cygpe2lmKHRoaXMuX3RyYWNrZWRFbGVtZW50cy5zaXplPT09MCl7dGhpcy5fZGV0YWNoVmlld3BvcnRMaXN0ZW5lcnMoKTtyZXR1cm59bGV0IGU9W107dGhpcy5fdHJhY2tlZEVsZW1lbnRzLmZvckVhY2godD0+e2lmKCF0LmlzQ29ubmVjdGVkKXtlLnB1c2godCk7cmV0dXJufXRoaXMuX2NhY2hlZFJlY3RzLnNldCh0LHQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpfSksZS5mb3JFYWNoKGU9Pnt0aGlzLl90cmFja2VkRWxlbWVudHMuZGVsZXRlKGUpLHRoaXMuX2NhY2hlZFJlY3RzLmRlbGV0ZShlKX0pLHRoaXMuX3RyYWNrZWRFbGVtZW50cy5zaXplPT09MCYmdGhpcy5fZGV0YWNoVmlld3BvcnRMaXN0ZW5lcnMoKX1zdGF0aWMgX2F0dGFjaFZpZXdwb3J0TGlzdGVuZXJzKCl7dGhpcy5fbGlzdGVuZXJzQXR0YWNoZWR8fCh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihgc2Nyb2xsYCx0aGlzLl92aWV3cG9ydExpc3RlbmVyLHtwYXNzaXZlOiEwfSksd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoYHJlc2l6ZWAsdGhpcy5fdmlld3BvcnRMaXN0ZW5lciksdGhpcy5fbGlzdGVuZXJzQXR0YWNoZWQ9ITApfXN0YXRpYyBfZGV0YWNoVmlld3BvcnRMaXN0ZW5lcnMoKXt0aGlzLl9saXN0ZW5lcnNBdHRhY2hlZCYmKHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGBzY3JvbGxgLHRoaXMuX3ZpZXdwb3J0TGlzdGVuZXIpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKGByZXNpemVgLHRoaXMuX3ZpZXdwb3J0TGlzdGVuZXIpLHRoaXMuX2xpc3RlbmVyc0F0dGFjaGVkPSExKX1zdGF0aWMgdHJhY2tWaWV3cG9ydEVsZW1lbnQoZSl7ZSYmKHRoaXMuX3RyYWNrZWRFbGVtZW50cy5oYXMoZSl8fCh0aGlzLl90cmFja2VkRWxlbWVudHMuYWRkKGUpLHRoaXMuX2F0dGFjaFZpZXdwb3J0TGlzdGVuZXJzKCksdGhpcy5fc2NoZWR1bGVWaWV3cG9ydFVwZGF0ZSgpKSl9c3RhdGljIHVudHJhY2tWaWV3cG9ydEVsZW1lbnQoZSl7ZSYmKHRoaXMuX3RyYWNrZWRFbGVtZW50cy5kZWxldGUoZSksdGhpcy5fY2FjaGVkUmVjdHMuZGVsZXRlKGUpLHRoaXMuX3RyYWNrZWRFbGVtZW50cy5zaXplPT09MCYmdGhpcy5fZGV0YWNoVmlld3BvcnRMaXN0ZW5lcnMoKSl9c3RhdGljIGdldENhY2hlZFJlY3QoZSl7cmV0dXJuIHRoaXMuX2NhY2hlZFJlY3RzLmdldChlKX1zdGF0aWMgZ2V0U2Nyb2xsVG9wKCl7cmV0dXJuKHdpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCktKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRUb3B8fDApfXN0YXRpYyBnZXRTY3JvbGxCb3R0b20oKXtsZXQgZT13aW5kb3cuaW5uZXJIZWlnaHR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHR8fGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0fHwwO3JldHVybiB0aGlzLmdldFNjcm9sbFRvcCgpK2V9c3RhdGljIHNodWZmbGVQbGF5bGlzdChlKXtsZXQgdD1lLmxlbmd0aCxuLHI7Zm9yKDt0IT09MDspcj1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqZS5sZW5ndGgpLC0tdCxuPWVbdF0sZVt0XT1lW3JdLGVbcl09bjtyZXR1cm4gZX1zdGF0aWMgaXNNb2JpbGVMYW5kc2NhcGUoKXtyZXR1cm4gd2luZG93Lm1hdGNoTWVkaWEoYChvcmllbnRhdGlvbjogbGFuZHNjYXBlKSBhbmQgKG1heC1oZWlnaHQ6IDQ4MHB4KWApLm1hdGNoZXN9c3RhdGljIHBsYXllclZpZXdhYmxlKGUpe2xldCB0PXRoaXMuX2NhY2hlZFJlY3RzLmdldChlKSxuPXQ9PW51bGw/ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTp0O3JldHVybiB0aGlzLnBsYXllclZpZXdhYmxlRnJvbVJlY3Qobil9c3RhdGljIHBsYXllclZpZXdhYmxlRnJvbVJlY3QoZSl7cmV0dXJuIHRoaXMuaXNNb2JpbGVMYW5kc2NhcGUoKT93aW5kb3cuaW5uZXJIZWlnaHQ+ZS50b3ArZS5oZWlnaHQvMiYmZS50b3ArZS5oZWlnaHQvMj4wOndpbmRvdy5pbm5lckhlaWdodD5lLnRvcCtlLmhlaWdodC8yfXN0YXRpYyBjcmVhdGVRdWVyeVN0cmluZyhlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKHQ9PmAke3R9PSR7ZVt0XX1gKS5qb2luKGAmYCl9c3RhdGljIGNyZWF0ZUVuY29kZWRRdWVyeVN0cmluZyhlKXtyZXR1cm4gT2JqZWN0LmtleXMoZSkubWFwKHQ9PmAke3R9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KGVbdF0pfWApLmpvaW4oYCZgKX1zdGF0aWMgc2V0TW9iaWxlTG9jYXRpb24oZSx0PSExKXtlPWV8fGBib3R0b20tcmlnaHRgO2xldCBuPXQ/YHJhcHRpdmUtcGxheWVyLXN0aWNreWA6YGFkdGhyaXZlLWNvbGxhcHNlYDtyZXR1cm4gZT09PWB0b3AtbGVmdGA/ZT1gJHtufS10b3AtbGVmdGA6ZT09PWB0b3AtcmlnaHRgP2U9YCR7bn0tdG9wLXJpZ2h0YDplPT09YGJvdHRvbS1sZWZ0YD9lPWAke259LWJvdHRvbS1sZWZ0YDplPT09YGJvdHRvbS1yaWdodGA/ZT1gJHtufS1ib3R0b20tcmlnaHRgOmU9PT1gdG9wLWNlbnRlcmAmJihlPWBhZHRocml2ZS1jb2xsYXBzZS0ke1IoKT9gdG9wLWNlbnRlcmA6YGJvdHRvbS1yaWdodGB9YCksZX1zdGF0aWMgYWRkTWF4UmVzb2x1dGlvblF1ZXJ5UGFyYW0oZSl7bGV0IHQ9YG1heF9yZXNvbHV0aW9uPSR7UigpP2AzMjBgOmAxMjgwYH1gLFtuLHJdPVN0cmluZyhlKS5zcGxpdChgP2ApO3JldHVybmAke259PyR7cj9yK2AmJHt0fWA6dH1gfX07ej1CLEkoQixgX3RyYWNrZWRFbGVtZW50c2AsbmV3IFNldCksSShCLGBfY2FjaGVkUmVjdHNgLG5ldyBXZWFrTWFwKSxJKEIsYF9yYWZJZGAsbnVsbCksSShCLGBfbGlzdGVuZXJzQXR0YWNoZWRgLCExKSxJKEIsYF92aWV3cG9ydExpc3RlbmVyYCwoKT0+e3ouX3NjaGVkdWxlVmlld3BvcnRVcGRhdGUoKX0pO2xldCBWPShlLHQpPT5lPT1udWxsfHxlIT09ZT90OmU7dmFyIFZlPWNsYXNze2NvbnN0cnVjdG9yKGUpe3RoaXMuX2Nsc09wdGlvbnM9ZSxJKHRoaXMsYHJlbGF0ZWRTZXR0aW5nc2Asdm9pZCAwKSxJKHRoaXMsYHBsYXllcnNgLHZvaWQgMCksSSh0aGlzLGByZW1vdmVWaWRlb1RpdGxlV3JhcHBlcmAsdm9pZCAwKSxJKHRoaXMsYGZvb3RlclNlbGVjdG9yYCx2b2lkIDApLHRoaXMucmVtb3ZlVmlkZW9UaXRsZVdyYXBwZXI9Vih0aGlzLl9jbHNPcHRpb25zLnNpdGVBZHMuYWRPcHRpb25zLnJlbW92ZVZpZGVvVGl0bGVXcmFwcGVyLCExKTtsZXQgdD10aGlzLl9jbHNPcHRpb25zLnNpdGVBZHMudmlkZW9QbGF5ZXJzO3RoaXMuZm9vdGVyU2VsZWN0b3I9Vih0JiZ0LmZvb3RlclNlbGVjdG9yLGBgKSx0aGlzLnBsYXllcnM9Vih0JiZ0LnBsYXllcnMubWFwKGU9PihlLm1vYmlsZUxvY2F0aW9uPUIuc2V0TW9iaWxlTG9jYXRpb24oZS5tb2JpbGVMb2NhdGlvbiksZSkpLFtdKSx0aGlzLnJlbGF0ZWRTZXR0aW5ncz10JiZ0LmNvbnRleHR1YWx9fSxIZT1jbGFzc3tjb25zdHJ1Y3RvcihlKXtJKHRoaXMsYG1vYmlsZVN0aWNreVBsYXllck9uUGFnZWAsITEpLEkodGhpcyxgY29sbGFwc2libGVQbGF5ZXJPblBhZ2VgLCExKSxJKHRoaXMsYHBsYXlsaXN0UGxheWVyQWRkZWRgLCExKSxJKHRoaXMsYHJlbGF0ZWRQbGF5ZXJBZGRlZGAsITEpLEkodGhpcyxgY29sbGFwc2VTZXR0aW5nc2Asdm9pZCAwKSxJKHRoaXMsYGZvb3RlclNlbGVjdG9yYCxgYCksSSh0aGlzLGByZW1vdmVWaWRlb1RpdGxlV3JhcHBlcmAsITEpLEkodGhpcyxgZGVza3RvcENvbGxhcHNlU2V0dGluZ3NgLHZvaWQgMCksSSh0aGlzLGBtb2JpbGVDb2xsYXBzZVNldHRpbmdzYCx2b2lkIDApLEkodGhpcyxgcmVsYXRlZFNldHRpbmdzYCx2b2lkIDApLEkodGhpcyxgcGxheWVySWRgLHZvaWQgMCksSSh0aGlzLGBwbGF5bGlzdElkYCx2b2lkIDApLEkodGhpcyxgZGVza3RvcFJlbGF0ZWRDb2xsYXBzZVNldHRpbmdzYCx2b2lkIDApLEkodGhpcyxgbW9iaWxlUmVsYXRlZENvbGxhcHNlU2V0dGluZ3NgLHZvaWQgMCksSSh0aGlzLGBjb2xsYXBzZVBsYXllcklkYCx2b2lkIDApLEkodGhpcyxgcGxheWVyc2Asdm9pZCAwKSxJKHRoaXMsYHZpZGVvQWRPcHRpb25zYCx2b2lkIDApLHRoaXMudmlkZW9BZE9wdGlvbnM9bmV3IFZlKGUpLHRoaXMucGxheWVycz10aGlzLnZpZGVvQWRPcHRpb25zLnBsYXllcnMsdGhpcy5yZWxhdGVkU2V0dGluZ3M9dGhpcy52aWRlb0FkT3B0aW9ucy5yZWxhdGVkU2V0dGluZ3MsdGhpcy5yZW1vdmVWaWRlb1RpdGxlV3JhcHBlcj10aGlzLnZpZGVvQWRPcHRpb25zLnJlbW92ZVZpZGVvVGl0bGVXcmFwcGVyLHRoaXMuZm9vdGVyU2VsZWN0b3I9dGhpcy52aWRlb0FkT3B0aW9ucy5mb290ZXJTZWxlY3Rvcn19O25hdmlnYXRvci52ZW5kb3I7bGV0IEg9bmF2aWdhdG9yLnVzZXJBZ2VudCxVZT1MKGU9Pi9DaHJvbXxBcHBsZWNocm9taXVtLy50ZXN0KGV8fEgpKSxXZT1MKCgpPT4vV2ViS2l0Ly50ZXN0KEgpKSxHZT1MKCgpPT5VZSgpP2BjaHJvbWl1bWA6V2UoKT9gd2Via2l0YDpgb3RoZXJgKSxLZT1lPT57bGV0IHQ9ZS5jbGllbnRXaWR0aDtpZihnZXRDb21wdXRlZFN0eWxlKXtsZXQgbj1nZXRDb21wdXRlZFN0eWxlKGUsbnVsbCk7dC09cGFyc2VGbG9hdChuLnBhZGRpbmdMZWZ0fHxgMGApK3BhcnNlRmxvYXQobi5wYWRkaW5nUmlnaHR8fGAwYCl9cmV0dXJuIHR9O3ZhciBxZT1jbGFzc3t9LEplPWNsYXNzIGV4dGVuZHMgcWV7Y29uc3RydWN0b3IoZSl7c3VwZXIoKSx0aGlzLl9wcm9iYWJpbGl0eT1lfWdldCgpe2lmKHRoaXMuX3Byb2JhYmlsaXR5PDB8fHRoaXMuX3Byb2JhYmlsaXR5PjEpdGhyb3cgRXJyb3IoYEludmFsaWQgcHJvYmFiaWxpdHk6ICR7dGhpcy5fcHJvYmFiaWxpdHl9YCk7cmV0dXJuIE1hdGgucmFuZG9tKCk8dGhpcy5fcHJvYmFiaWxpdHl9fSxZZT1jbGFzc3tjb25zdHJ1Y3Rvcigpe0kodGhpcyxgX2ZlYXR1cmVSb2xsb3V0c2Ase30pLEkodGhpcyxgX2NoZWNrZWRGZWF0dXJlUm9sbG91dHNgLG5ldyBNYXApLEkodGhpcyxgX2VuYWJsZWRGZWF0dXJlUm9sbG91dElkc2AsW10pfWdldCBzaXRlRmVhdHVyZVJvbGxvdXRzKCl7cmV0dXJuIHRoaXMuX2ZlYXR1cmVSb2xsb3V0c31faXNSb2xsb3V0RW5hYmxlZChlKXtpZih0aGlzLl9kb2VzUm9sbG91dEV4aXN0KGUpKXtsZXQgdD10aGlzLl9mZWF0dXJlUm9sbG91dHNbZV0sbj10LmVuYWJsZWQscj10LmRhdGE7aWYodGhpcy5fZG9lc1JvbGxvdXRIYXZlQ29uZmlnKGUpJiZ0aGlzLl9pc0ZlYXR1cmVSb2xsb3V0Q29uZmlnVHlwZShyKSl7bGV0IGU9ci5wY3RfZW5hYmxlZD9yLnBjdF9lbmFibGVkLzEwMDoxO249biYmbmV3IEplKGUpLmdldCgpfXJldHVybiBufXJldHVybiExfWlzUm9sbG91dEVuYWJsZWQoZSl7dmFyIHQ7bGV0IG49KHQ9dGhpcy5fY2hlY2tlZEZlYXR1cmVSb2xsb3V0cy5nZXQoZSkpPT1udWxsP3RoaXMuX2lzUm9sbG91dEVuYWJsZWQoZSk6dDtyZXR1cm4gdGhpcy5fY2hlY2tlZEZlYXR1cmVSb2xsb3V0cy5nZXQoZSk9PT12b2lkIDAmJnRoaXMuX2NoZWNrZWRGZWF0dXJlUm9sbG91dHMuc2V0KGUsbiksbn1pc1JvbGxvdXRBZG1pbmlzdHJhdGl2ZWx5RW5hYmxlZChlKXtyZXR1cm4gdGhpcy5fZG9lc1JvbGxvdXRFeGlzdChlKSYmdGhpcy5fZmVhdHVyZVJvbGxvdXRzW2VdLmVuYWJsZWR9X2RvZXNSb2xsb3V0RXhpc3QoZSl7cmV0dXJuIHRoaXMuX2ZlYXR1cmVSb2xsb3V0cyYmISF0aGlzLl9mZWF0dXJlUm9sbG91dHNbZV19X2RvZXNSb2xsb3V0SGF2ZUNvbmZpZyhlKXtyZXR1cm4gdGhpcy5fZG9lc1JvbGxvdXRFeGlzdChlKSYmYGRhdGFgaW4gdGhpcy5fZmVhdHVyZVJvbGxvdXRzW2VdfV9pc0ZlYXR1cmVSb2xsb3V0Q29uZmlnVHlwZShlKXtyZXR1cm4gdHlwZW9mIGU9PWBvYmplY3RgJiYhIWUmJiEhT2JqZWN0LmtleXMoZSkubGVuZ3RofWdldFNpdGVSb2xsb3V0Q29uZmlnKGUpe3ZhciB0O2xldCBuPXRoaXMuaXNSb2xsb3V0RW5hYmxlZChlKSxyPSh0PXRoaXMuX2ZlYXR1cmVSb2xsb3V0c1tlXSk9PW51bGw/dm9pZCAwOnQuZGF0YTtyZXR1cm4gbiYmdGhpcy5fZG9lc1JvbGxvdXRIYXZlQ29uZmlnKGUpJiZ0aGlzLl9pc0ZlYXR1cmVSb2xsb3V0Q29uZmlnVHlwZShyKT9yOnt9fWdldCBlbmFibGVkRmVhdHVyZVJvbGxvdXRJZHMoKXtyZXR1cm4gdGhpcy5fZW5hYmxlZEZlYXR1cmVSb2xsb3V0SWRzfX0sWGU9Y2xhc3MgZXh0ZW5kcyBZZXtjb25zdHJ1Y3RvcihlKXtzdXBlcigpLHRoaXMuX2ZlYXR1cmVSb2xsb3V0cz1lLHRoaXMuX3NldEVuYWJsZWRGZWF0dXJlUm9sbG91dElkcygpfV9zZXRFbmFibGVkRmVhdHVyZVJvbGxvdXRJZHMoKXtPYmplY3QuZW50cmllcyh0aGlzLl9mZWF0dXJlUm9sbG91dHMpLmZvckVhY2goKFtlLHRdKT0+e3RoaXMuaXNSb2xsb3V0RW5hYmxlZChlKSYmdC5mZWF0dXJlUm9sbG91dElkIT09dm9pZCAwJiZ0aGlzLl9lbmFibGVkRmVhdHVyZVJvbGxvdXRJZHMucHVzaCh0LmZlYXR1cmVSb2xsb3V0SWQpfSl9fSxaZTtsZXQgUWU9bmV3IFhlKHdpbmRvdy5hZHRocml2ZUNMUyYmd2luZG93LmFkdGhyaXZlQ0xTLnNpdGVBZHMmJmBmZWF0dXJlUm9sbG91dHNgaW4gd2luZG93LmFkdGhyaXZlQ0xTLnNpdGVBZHM/KFplPXdpbmRvdy5hZHRocml2ZUNMUy5zaXRlQWRzLmZlYXR1cmVSb2xsb3V0cyk9PW51bGw/e306WmU6e30pLCRlPVtbNzI4LDkwXSxbMzAwLDI1MF0sWzMwMCw2MDBdLFszMjAsNTBdLFs5NzAsMjUwXSxbMTYwLDYwMF0sWzMwMCwxMDUwXSxbMzM2LDI4MF0sWzk3MCw5MF0sWzMwMCw1MF0sWzMyMCwxMDBdLFs0NjgsNjBdLFsyNTAsMjUwXSxbMTIwLDI0MF0sWzEsMV0sWzMwMCwzMDBdLFszMDAsNDIwXSxbNzI4LDI1MF0sWzMyMCwzMDBdLFszMDAsMzkwXV0sZXQ9bmV3IE1hcChbW1AuRm9vdGVyLDFdLFtQLkhlYWRlciwyXSxbUC5TaWRlYmFyLDNdLFtQLkNvbnRlbnQsNF0sW1AuUmVjaXBlLDVdLFtgU2lkZWJhcl9zdGlja3lgLDZdLFtgQmVsb3cgUG9zdGAsN11dKSx0dD1lPT4kZS5maWx0ZXIoKFt0LG5dKT0+ZS5zb21lKChbZSxyXSk9PnQ9PT1lJiZuPT09cikpLG50PShlLFt0LG5dLHIpPT57bGV0e2xvY2F0aW9uOmksc2VxdWVuY2U6YX09ZTtpZihpPT09UC5Gb290ZXIpcmV0dXJuIShyPT09YHBob25lYCYmdD09PTMyMCYmbj09PTEwMCk7aWYoaT09PVAuSGVhZGVyKXJldHVybiEwO2lmKGk9PT1QLlJlY2lwZSlyZXR1cm4hKFIoKSYmcj09PWBwaG9uZWAmJih0PT09MzAwJiZuPT09MzkwfHx0PT09MzIwJiZuPT09MzAwKSk7aWYoaT09PVAuU2lkZWJhcil7bGV0IHQ9ZS5hZFNpemVzLnNvbWUoKFssZV0pPT5lPD0zMDApLHI9ISFhJiZhPD01LGk9bj4zMDA7cmV0dXJuIGkmJiF0fHxhPT09OT8hMDpyP2k/ZS5zdGlja3k6ITA6IWl9ZWxzZSByZXR1cm4hMH0scnQ9KGUsdCk9PntsZXR7bG9jYXRpb246bixzdGlja3k6cn09ZTtpZihuPT09UC5SZWNpcGUmJnQpe2xldHtyZWNpcGVNb2JpbGU6ZSxyZWNpcGVEZXNrdG9wOm59PXQ7aWYoUigpJiZlIT1udWxsJiZlLmVuYWJsZWR8fCFSKCkmJm4hPW51bGwmJm4uZW5hYmxlZClyZXR1cm4hMH1yZXR1cm4gbj09PVAuRm9vdGVyfHxyfSxpdD0oZSx0KT0+e2xldCBuPXQuYWRVbml0cyxyPVFlLmlzUm9sbG91dEVuYWJsZWQoYGVuYWJsZS0yNTBweC1tYXgtYWQtaGVpZ2h0YCk7cmV0dXJuIG4uZmlsdGVyKGU9PmUuZHluYW1pYyE9PXZvaWQgMCYmZS5keW5hbWljLmVuYWJsZWQpLm1hcChuPT57bGV0IGk9bi5sb2NhdGlvbi5yZXBsYWNlKC9ccysvZyxgX2ApLGE9aT09PWBTaWRlYmFyYD8wOjI7aT09PVAuQ29udGVudCYmciYmVWUoKSYmKG4uYWRTaXplcz1uLmFkU2l6ZXMuZmlsdGVyKGU9PmVbMV08PTI1MCkpO2xldCBvPVtdO2ZvcihsZXQgZSBvZiBWKG4udGFyZ2V0aW5nLFtdKSl7bGV0IHQ9ZTt0LmtleT09PWBzcGVjaWFsYCYmby5wdXNoKC4uLnQudmFsdWUpfXJldHVybnthdWN0aW9uUHJpb3JpdHk6ZXQuZ2V0KGkpfHw4LGxvY2F0aW9uOmksc2VxdWVuY2U6VihuLnNlcXVlbmNlLDEpLHRoaXJkUGFydHlBZFVuaXROYW1lOm4udGhpcmRQYXJ0eUFkVW5pdE5hbWV8fGBgLHNpemVzOnR0KG4uYWRTaXplcykuZmlsdGVyKHQ9Pm50KG4sdCxlKSksZGV2aWNlczpuLmRldmljZXMscGFnZVNlbGVjdG9yOlYobi5keW5hbWljLnBhZ2VTZWxlY3RvcixgYCkudHJpbSgpLGVsZW1lbnRTZWxlY3RvcjpWKG4uZHluYW1pYy5lbGVtZW50U2VsZWN0b3IsYGApLnRyaW0oKSxwb3NpdGlvbjpWKG4uZHluYW1pYy5wb3NpdGlvbixgYmVmb3JlYmVnaW5gKSxtYXg6TWF0aC5mbG9vcihWKG4uZHluYW1pYy5tYXgsMCkpLHNwYWNpbmc6VihuLmR5bmFtaWMuc3BhY2luZywwKSxza2lwOk1hdGguZmxvb3IoVihuLmR5bmFtaWMuc2tpcCwwKSksZXZlcnk6TWF0aC5tYXgoTWF0aC5mbG9vcihWKG4uZHluYW1pYy5ldmVyeSwxKSksMSksY2xhc3NOYW1lczpuLmR5bmFtaWMuY2xhc3NOYW1lc3x8W10sc3RpY2t5OnJ0KG4sdC5hZE9wdGlvbnMuc3RpY2t5Q29udGFpbmVyQ29uZmlnKSxzdGlja3lPdmVybGFwU2VsZWN0b3I6VihuLnN0aWNreU92ZXJsYXBTZWxlY3RvcixgYCkudHJpbSgpLGF1dG9zaXplOm4uYXV0b3NpemUsc3BlY2lhbDpvLGxhenk6VihuLmR5bmFtaWMubGF6eSwhMSksbGF6eU1heDpWKG4uZHluYW1pYy5sYXp5TWF4LGEpLGxhenlNYXhEZWZhdWx0ZWQ6bi5keW5hbWljLmxhenlNYXg9PT0wPyExOiFuLmR5bmFtaWMubGF6eU1heCxuYW1lOm4ubmFtZX19KX0sYXQ9KGUsdCk9PntsZXQgbj1LZSh0KSxyPWUuc3RpY2t5JiZlLmxvY2F0aW9uPT09UC5TaWRlYmFyO3JldHVybiBlLnNpemVzLmZpbHRlcih0PT57bGV0IGk9ZS5hdXRvc2l6ZT90WzBdPD1ufHx0WzBdPD0zMjA6ITAsYT1yP3RbMV08PXdpbmRvdy5pbm5lckhlaWdodC0xMDA6ITA7cmV0dXJuIGkmJmF9KX0sb3Q9KGUsdCk9PmUuZGV2aWNlcy5pbmNsdWRlcyh0KSxzdD1lPT5lLnBhZ2VTZWxlY3Rvci5sZW5ndGg9PT0wfHxkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUucGFnZVNlbGVjdG9yKSE9PW51bGwsVT1uZXcgY2xhc3N7aW5mbyhlLHQsLi4ubil7dGhpcy5jYWxsKGNvbnNvbGUuaW5mbyxlLHQsLi4ubil9d2FybihlLHQsLi4ubil7dGhpcy5jYWxsKGNvbnNvbGUud2FybixlLHQsLi4ubil9ZXJyb3IoZSx0LC4uLm4pe3RoaXMuY2FsbChjb25zb2xlLmVycm9yLGUsdCwuLi5uKSx0aGlzLnNlbmRFcnJvckxvZ1RvQ29tbWFuZFF1ZXVlKGUsdCwuLi5uKX1ldmVudChlLHQsLi4ubil7dmFyIHI7KChyPXdpbmRvdy5hZHRocml2ZUNMUyk9PW51bGw/dm9pZCAwOnIuYnVja2V0KT09PWBkZWJ1Z2AmJnRoaXMuaW5mbyhlLHQpfXNlbmRFcnJvckxvZ1RvQ29tbWFuZFF1ZXVlKGUsdCwuLi5uKXt3aW5kb3cuYWR0aHJpdmU9d2luZG93LmFkdGhyaXZlfHx7fSx3aW5kb3cuYWR0aHJpdmUuY21kPXdpbmRvdy5hZHRocml2ZS5jbWR8fFtdLHdpbmRvdy5hZHRocml2ZS5jbWQucHVzaCgoKT0+e3dpbmRvdy5hZHRocml2ZS5sb2dFcnJvciE9PXZvaWQgMCYmdHlwZW9mIHdpbmRvdy5hZHRocml2ZS5sb2dFcnJvcj09YGZ1bmN0aW9uYCYmd2luZG93LmFkdGhyaXZlLmxvZ0Vycm9yKGUsdCxuKX0pfWNhbGwoZSx0LG4sLi4ucil7bGV0IGk9W2AlYyR7dH06OiR7bn0gYF0sYT1bYGNvbG9yOiAjOTk5OyBmb250LXdlaWdodDogYm9sZDtgXTtyLmxlbmd0aD4wJiZ0eXBlb2YgclswXT09YHN0cmluZ2AmJmkucHVzaChyLnNoaWZ0KCkpLGEucHVzaCguLi5yKTt0cnl7RnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoZSxjb25zb2xlLFtpLmpvaW4oYGApLC4uLmFdKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpO3JldHVybn19fSxXPXtEZXNrdG9wOmBkZXNrdG9wYCxNb2JpbGU6YG1vYmlsZWB9LGN0PWU9PntsZXQgdD1kb2N1bWVudC5ib2R5LG49YGFkdGhyaXZlLWRldmljZS0ke2V9YDtpZighdC5jbGFzc0xpc3QuY29udGFpbnMobikpdHJ5e3QuY2xhc3NMaXN0LmFkZChuKX1jYXRjaChlKXtVLmVycm9yKGBCb2R5RGV2aWNlQ2xhc3NDb21wb25lbnRgLGBpbml0YCx7bWVzc2FnZTplLm1lc3NhZ2V9KTtsZXQgdD1gY2xhc3NMaXN0YGluIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYF9gKTtVLmVycm9yKGBCb2R5RGV2aWNlQ2xhc3NDb21wb25lbnRgLGBpbml0LnN1cHBvcnRgLHtzdXBwb3J0OnR9KX19LEc9ZT0+YGFkdGhyaXZlLSR7ZS5sb2NhdGlvbi5yZXBsYWNlKGBfYCxgLWApLnRvTG93ZXJDYXNlKCl9YCxsdD1lPT5gJHtHKGUpfS0ke2Uuc2VxdWVuY2V9YCx1dD0oZSx0KT0+d2luZG93Lm1hdGNoTWVkaWEoYChtaW4td2lkdGg6ICR7dH1weClgKS5tYXRjaGVzP2BkZXNrdG9wYDp3aW5kb3cubWF0Y2hNZWRpYShgKG1pbi13aWR0aDogJHtlfXB4KWApLm1hdGNoZXM/YHRhYmxldGA6YHBob25lYCxkdD1lPT57bGV0IHQ9ZS5vZmZzZXRIZWlnaHQsbj1lLm9mZnNldFdpZHRoLHI9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPWRvY3VtZW50LmJvZHksYT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbz13aW5kb3cucGFnZVlPZmZzZXR8fGEuc2Nyb2xsVG9wfHxpLnNjcm9sbFRvcCxzPXdpbmRvdy5wYWdlWE9mZnNldHx8YS5zY3JvbGxMZWZ0fHxpLnNjcm9sbExlZnQsYz1hLmNsaWVudFRvcHx8aS5jbGllbnRUb3B8fDAsbD1hLmNsaWVudExlZnR8fGkuY2xpZW50TGVmdHx8MCx1PU1hdGgucm91bmQoci50b3Arby1jKSxkPU1hdGgucm91bmQoci5sZWZ0K3MtbCk7cmV0dXJue3RvcDp1LGxlZnQ6ZCxib3R0b206dSt0LHJpZ2h0OmQrbix3aWR0aDpuLGhlaWdodDp0fX0sZnQ9KGU9ZG9jdW1lbnQpPT4oZT09PWRvY3VtZW50P2RvY3VtZW50LmJvZHk6ZSkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wLHB0PWU9PmUuaW5jbHVkZXMoYCxgKT9lLnNwbGl0KGAsYCk6W2VdLG10PShlPWRvY3VtZW50KT0+e2xldCB0PWUucXVlcnlTZWxlY3RvckFsbChgYXJ0aWNsZWApO2lmKHQubGVuZ3RoPT09MClyZXR1cm4gbnVsbDtsZXQgbj1BcnJheS5mcm9tKHQpLnJlZHVjZSgoZSx0KT0+dC5vZmZzZXRIZWlnaHQ+ZS5vZmZzZXRIZWlnaHQ/dDplKTtyZXR1cm4gbiYmbi5vZmZzZXRIZWlnaHQ+d2luZG93LmlubmVySGVpZ2h0KjEuNT9uOm51bGx9LGh0PShlLHQsbj1kb2N1bWVudCk9PntsZXQgcj1uZXcgU2V0KHQubWFwLm1hcCgoe2VsOmV9KT0+ZSkpLGk9bXQobiksYT1pP1tpXTpbXSxvPVtdO2UuZm9yRWFjaChlPT57bGV0IHQ9QXJyYXkuZnJvbShuLnF1ZXJ5U2VsZWN0b3JBbGwoZS5lbGVtZW50U2VsZWN0b3IpKS5zbGljZSgwLGUuc2tpcCk7cHQoZS5lbGVtZW50U2VsZWN0b3IpLmZvckVhY2goaT0+e2xldCBzPW4ucXVlcnlTZWxlY3RvckFsbChpKTtmb3IobGV0IG49MDtuPHMubGVuZ3RoO24rKyl7bGV0IGk9c1tuXTtpZihyLmhhcyhpKSljb250aW51ZTtsZXQgYz1pJiZpLnBhcmVudEVsZW1lbnQ7YyYmYyE9PWRvY3VtZW50LmJvZHk/YS5wdXNoKGMpOmEucHVzaChpKSx0LmluZGV4T2YoaSk9PT0tMSYmby5wdXNoKHtkeW5hbWljQWQ6ZSxlbGVtZW50Oml9KX19KX0pO2xldCBzPWZ0KG4pLGM9by5tYXAoZT0+KHtpdGVtOmUsdG9wOmUuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3Atc30pKTtyZXR1cm4gYy5zb3J0KChlLHQpPT5lLnRvcC10LnRvcCksW2EsYy5tYXAoKHtpdGVtOmV9KT0+ZSldfSxndD0oZSx0LG49ZG9jdW1lbnQpPT57bGV0W3IsaV09aHQoZSx0LG4pO3JldHVybiByLmxlbmd0aD09PTA/W251bGwsaV06W0FycmF5LmZyb20ocikucmVkdWNlKChlLHQpPT50Lm9mZnNldEhlaWdodD5lLm9mZnNldEhlaWdodD90OmUpfHxkb2N1bWVudC5ib2R5LGldfSxfdD0oZSx0PWBkaXYgI2NvbW1lbnRzLCBzZWN0aW9uIC5jb21tZW50c2ApPT57bGV0IG49ZS5xdWVyeVNlbGVjdG9yKHQpO3JldHVybiBuP2Uub2Zmc2V0SGVpZ2h0LW4ub2Zmc2V0SGVpZ2h0OmUub2Zmc2V0SGVpZ2h0fSx2dD0oKT0+e2xldCBlPWRvY3VtZW50LmJvZHksdD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIE1hdGgubWF4KGUuc2Nyb2xsSGVpZ2h0LGUub2Zmc2V0SGVpZ2h0LHQuY2xpZW50SGVpZ2h0LHQuc2Nyb2xsSGVpZ2h0LHQub2Zmc2V0SGVpZ2h0KX0seXQ9KCk9PntsZXQgZT1kb2N1bWVudC5ib2R5LHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O3JldHVybiBNYXRoLm1heChlLnNjcm9sbFdpZHRoLGUub2Zmc2V0V2lkdGgsdC5jbGllbnRXaWR0aCx0LnNjcm9sbFdpZHRoLHQub2Zmc2V0V2lkdGgpfTtmdW5jdGlvbiBidChlLHQpe3Q9PT12b2lkIDAmJih0PXt9KTt2YXIgbj10Lmluc2VydEF0O2lmKCEoIWV8fHR5cGVvZiBkb2N1bWVudD5gdWApKXt2YXIgcj1kb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShgaGVhZGApWzBdLGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgc3R5bGVgKTtpLnR5cGU9YHRleHQvY3NzYCxuPT09YHRvcGAmJnIuZmlyc3RDaGlsZD9yLmluc2VydEJlZm9yZShpLHIuZmlyc3RDaGlsZCk6ci5hcHBlbmRDaGlsZChpKSxpLnN0eWxlU2hlZXQ/aS5zdHlsZVNoZWV0LmNzc1RleHQ9ZTppLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpKX19dmFyIHh0PWJ0O2xldCBTdD1lPT54dChgCiAgLmFkdGhyaXZlLWRldmljZS1waG9uZSAuYWR0aHJpdmUtc3RpY2t5LWNvbnRlbnQgewogICAgaGVpZ2h0OiA0NTBweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLWJvdHRvbTogMTAwcHggIWltcG9ydGFudDsKICB9CiAgLmFkdGhyaXZlLWNvbnRlbnQuYWR0aHJpdmUtc3RpY2t5IHsKICAgIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsKICAgIHBvc2l0aW9uOiBzdGlja3kgIWltcG9ydGFudDsKICAgIHRvcDogNDJweCAhaW1wb3J0YW50OwogICAgbWFyZ2luLXRvcDogNDJweCAhaW1wb3J0YW50OwogIH0KICAuYWR0aHJpdmUtY29udGVudC5hZHRocml2ZS1zdGlja3k6YWZ0ZXIgewogICAgY29udGVudDogIuKAlCBBZHZlcnRpc2VtZW50LiBTY3JvbGwgZG93biB0byBjb250aW51ZS4g4oCUIjsKICAgIGZvbnQtc2l6ZTogMTBwdDsKICAgIG1hcmdpbi10b3A6IDVweDsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIGRpc3BsYXk6YmxvY2s7CiAgICBjb2xvcjogIzg4ODsKICB9CiAgLmFkdGhyaXZlLXN0aWNreS1jb250YWluZXIgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgbWluLWhlaWdodDoke2V8fDQwMH1weDsKICAgIG1hcmdpbjogMTBweCAwIDEwcHggMDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGQUZBRkE7CiAgICBwYWRkaW5nLWJvdHRvbTowcHg7CiAgfQogIGApLEN0PWU9Pnt4dChgCiAgLmFkdGhyaXZlLXJlY2lwZS5hZHRocml2ZS1zdGlja3kgewogICAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5OwogICAgcG9zaXRpb246IHN0aWNreSAhaW1wb3J0YW50OwogICAgdG9wOiA0MnB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW4tdG9wOiA0MnB4ICFpbXBvcnRhbnQ7CiAgfQogIC5hZHRocml2ZS1yZWNpcGUtc3RpY2t5LWNvbnRhaW5lciB7CiAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBtaW4taGVpZ2h0OiR7ZXx8NDAwfXB4ICFpbXBvcnRhbnQ7CiAgICBtYXJnaW46IDEwcHggMCAxMHB4IDA7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOwogICAgcGFkZGluZy1ib3R0b206MHB4OwogIH0KICBgKX0sd3Q9ZT0+ZS5zb21lKGU9PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZSkhPT1udWxsKSxUdD1lPT4vXlstX2EtekEtWl0rWy1fYS16QS1aMC05XSokLy50ZXN0KGUpLEV0PShlLHQsbik9PntsZXQgcj1lPT5lPyEhKGUuY2xhc3NMaXN0LmNvbnRhaW5zKGBhZHRocml2ZS1hZGApfHxlLmlkLmluY2x1ZGVzKGBfJHtufV9gKSk6ITE7c3dpdGNoKHQpe2Nhc2VgYmVmb3JlYmVnaW5gOnJldHVybiByKGUucHJldmlvdXNFbGVtZW50U2libGluZyk7Y2FzZWBhZnRlcmVuZGA6cmV0dXJuIHIoZS5uZXh0RWxlbWVudFNpYmxpbmcpO2Nhc2VgYWZ0ZXJiZWdpbmA6cmV0dXJuIHIoZS5maXJzdEVsZW1lbnRDaGlsZCk7Y2FzZWBiZWZvcmVlbmRgOnJldHVybiByKGUubGFzdEVsZW1lbnRDaGlsZCk7ZGVmYXVsdDpyZXR1cm4hMX19O2Z1bmN0aW9uIER0KGUsdCl7dmFyIG49T2JqZWN0LmtleXMoZSk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTt0JiYocj1yLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpLmVudW1lcmFibGV9KSksbi5wdXNoLmFwcGx5KG4scil9cmV0dXJuIG59ZnVuY3Rpb24gSyhlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF09PW51bGw/e306YXJndW1lbnRzW3RdO3QlMj9EdChPYmplY3QobiksITApLmZvckVhY2goZnVuY3Rpb24odCl7SShlLHQsblt0XSl9KTpPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycz9PYmplY3QuZGVmaW5lUHJvcGVydGllcyhlLE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKG4pKTpEdChPYmplY3QobikpLmZvckVhY2goZnVuY3Rpb24odCl7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCxPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG4sdCkpfSl9cmV0dXJuIGV9bGV0IE90PWU9Pnt0cnl7cmV0dXJue3ZhbGlkOiEwLGVsZW1lbnRzOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9fWNhdGNoKGUpe3JldHVybiBLKHt2YWxpZDohMX0sZSl9fSxrdD1lPT5lPT09YGA/e3ZhbGlkOiEwfTpPdChlKSxBdD0oZSx0KT0+TWF0aC5yYW5kb20oKSoodC1lKStlO3ZhciBxPWNsYXNzIGUgZXh0ZW5kcyBxZXtjb25zdHJ1Y3RvcihlPVtdLHQpe3N1cGVyKCksdGhpcy5fY2hvaWNlcz1lLHRoaXMuX2RlZmF1bHQ9dH1zdGF0aWMgZnJvbUFycmF5KHQsbil7cmV0dXJuIG5ldyBlKHQubWFwKChbZSx0XSk9Pih7Y2hvaWNlOmUsd2VpZ2h0OnR9KSksbil9YWRkQ2hvaWNlKGUsdCl7dGhpcy5fY2hvaWNlcy5wdXNoKHtjaG9pY2U6ZSx3ZWlnaHQ6dH0pfWdldCgpe2xldCBlPUF0KDAsMTAwKSx0PTA7Zm9yKGxldHtjaG9pY2U6bix3ZWlnaHQ6cn1vZiB0aGlzLl9jaG9pY2VzKWlmKHQrPXIsdD49ZSlyZXR1cm4gbjtyZXR1cm4gdGhpcy5fZGVmYXVsdH1nZXQgdG90YWxXZWlnaHQoKXtyZXR1cm4gdGhpcy5fY2hvaWNlcy5yZWR1Y2UoKGUse3dlaWdodDp0fSk9PmUrdCwwKX19O2xldCBKPXtBZERlbnNpdHk6YGFkZGVuc2l0eWAsQWRMYXlvdXQ6YGFkbGF5b3V0YCxGb290ZXJDbG9zZUJ1dHRvbjpgZm9vdGVyY2xvc2VgLEludGVyc3RpdGlhbDpgaW50ZXJzdGl0aWFsYCxSZW1vdmVWaWRlb1RpdGxlV3JhcHBlcjpgcmVtb3ZldmlkZW90aXRsZXdyYXBwZXJgLFN0aWNreU91dHN0cmVhbTpgc3RpY2t5b3V0c3RyZWFtYCxTdGlja3lPdXRzdHJlYW1PblN0aWNreVBsYXllcjpgc29zcHBgLFZpZGVvQWR2YW5jZVBsYXlsaXN0UmVsYXRlZFBsYXllcjpgdmlkZW9hZHZhbmNlcGxheWxpc3RycGAsTW9iaWxlU3RpY2t5UGxheWVyUG9zaXRpb246YG1zcHBgfTt2YXIganQ9Y2xhc3N7Y29uc3RydWN0b3IoKXtJKHRoaXMsYG5hbWVgLHZvaWQgMCksSSh0aGlzLGBkaXNhYmxlYCx2b2lkIDApLEkodGhpcyxgZ2RwclB1cnBvc2VzYCx2b2lkIDApfX07bGV0IE10PVtgbWNtcGZyZXFyZWNgXSxZPW5ldyBjbGFzcyBleHRlbmRzIGp0e2NvbnN0cnVjdG9yKC4uLmUpe3N1cGVyKC4uLmUpLEkodGhpcyxgbmFtZWAsYEJyb3dzZXJTdG9yYWdlYCksSSh0aGlzLGBkaXNhYmxlYCwhMSksSSh0aGlzLGBnZHByUHVycG9zZXNgLFsxXSksSSh0aGlzLGBfc2Vzc2lvblN0b3JhZ2VIYW5kbGVyUXVldWVgLFtdKSxJKHRoaXMsYF9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWVgLFtdKSxJKHRoaXMsYF9jb29raWVIYW5kbGVyUXVldWVgLFtdKSxJKHRoaXMsYF9nZHByYCx2b2lkIDApLEkodGhpcyxgX3Nob3VsZFF1ZXVlYCwhMSl9aW5pdChlKXt0aGlzLl9nZHByPWUuZ2Rwcj09PWB0cnVlYCx0aGlzLl9zaG91bGRRdWV1ZT10aGlzLl9nZHByfWNsZWFyUXVldWUoZSl7dGhpcy5fZ2RwciYmdGhpcy5faGFzU3RvcmFnZUNvbnNlbnQoKT09PSExfHwoZSYmKHRoaXMuX3Nob3VsZFF1ZXVlPSExLHRoaXMuX3Nlc3Npb25TdG9yYWdlSGFuZGxlclF1ZXVlLmZvckVhY2goZT0+e3RoaXMuc2V0U2Vzc2lvblN0b3JhZ2UoZS5rZXksZS52YWx1ZSl9KSx0aGlzLl9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWUuZm9yRWFjaChlPT57aWYoZS5rZXk9PT1gYWR0aHJpdmVfYWJncm91cGApe2xldCB0PU9iamVjdC5rZXlzKGUudmFsdWUpWzBdLG49ZS52YWx1ZVt0XSxyPWUudmFsdWVbYCR7dH1fd2VpZ2h0YF07dGhpcy5nZXRPclNldEFCR3JvdXBMb2NhbFN0b3JhZ2VWYWx1ZSh0LG4scix7dmFsdWU6MjQsdW5pdDpgaG91cnNgfSl9ZWxzZSBlLmV4cGlyeT9lLnR5cGU9PT1gaW50ZXJuYWxgP3RoaXMuc2V0RXhwaXJhYmxlSW50ZXJuYWxMb2NhbFN0b3JhZ2UoZS5rZXksZS52YWx1ZSx7ZXhwaXJ5OmUuZXhwaXJ5LHJlc2V0T25SZWFkOmUucmVzZXRPblJlYWR9KTp0aGlzLnNldEV4cGlyYWJsZUV4dGVybmFsTG9jYWxTdG9yYWdlKGUua2V5LGUudmFsdWUse2V4cGlyeTplLmV4cGlyeSxyZXNldE9uUmVhZDplLnJlc2V0T25SZWFkfSk6ZS50eXBlPT09YGludGVybmFsYD90aGlzLnNldEludGVybmFsTG9jYWxTdG9yYWdlKGUua2V5LGUudmFsdWUpOnRoaXMuc2V0RXh0ZXJuYWxMb2NhbFN0b3JhZ2UoZS5rZXksZS52YWx1ZSl9KSx0aGlzLl9jb29raWVIYW5kbGVyUXVldWUuZm9yRWFjaChlPT57ZS50eXBlPT09YGludGVybmFsYD90aGlzLnNldEludGVybmFsQ29va2llKGUua2V5LGUudmFsdWUpOnRoaXMuc2V0RXh0ZXJuYWxDb29raWUoZS5rZXksZS52YWx1ZSl9KSksdGhpcy5fc2Vzc2lvblN0b3JhZ2VIYW5kbGVyUXVldWU9W10sdGhpcy5fbG9jYWxTdG9yYWdlSGFuZGxlclF1ZXVlPVtdLHRoaXMuX2Nvb2tpZUhhbmRsZXJRdWV1ZT1bXSl9cmVhZEludGVybmFsQ29va2llKGUpe3JldHVybiB0aGlzLl92ZXJpZnlJbnRlcm5hbEtleShlKSx0aGlzLl9yZWFkQ29va2llKGUpfXJlYWRFeHRlcm5hbENvb2tpZShlKXtyZXR1cm4gdGhpcy5fcmVhZENvb2tpZShlKX1yZWFkRXh0ZXJuYWxDb29raWVMaXN0KGUpe3JldHVybiB0aGlzLl9yZWFkQ29va2llTGlzdChlKX1nZXRBbGxDb29raWVzKCl7cmV0dXJuIHRoaXMuX2dldENvb2tpZXMoKX1yZWFkSW50ZXJuYWxMb2NhbFN0b3JhZ2UoZSl7cmV0dXJuIHRoaXMuX3ZlcmlmeUludGVybmFsS2V5KGUpLHRoaXMuX3JlYWRGcm9tTG9jYWxTdG9yYWdlKGUpfXJlYWRFeHRlcm5hbExvY2FsU3RvcmFnZShlKXtyZXR1cm4gdGhpcy5fcmVhZEZyb21Mb2NhbFN0b3JhZ2UoZSl9cmVhZFNlc3Npb25TdG9yYWdlKGUpe2xldCB0PXdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGUpO2lmKCF0KXJldHVybiBudWxsO3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChlKXtyZXR1cm4gdH19ZGVsZXRlQ29va2llKGUpe2RvY3VtZW50LmNvb2tpZT1gJHtlfT07IFNhbWVTaXRlPU5vbmU7IFNlY3VyZTsgZXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAwIFVUQzsgcGF0aD0vYH1kZWxldGVMb2NhbFN0b3JhZ2UoZSl7d2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpfWRlbGV0ZVNlc3Npb25TdG9yYWdlKGUpe3dpbmRvdy5zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGUpfV9oYXNTdG9yYWdlQ29uc2VudCgpe2lmKHR5cGVvZiB3aW5kb3cuX19jbXA9PWBmdW5jdGlvbmApdHJ5e2xldCBlPXdpbmRvdy5fX2NtcChgZ2V0Q01QRGF0YWApO2lmKCFlfHwhZS5wdXJwb3NlQ29uc2VudHMpcmV0dXJuO2xldCB0PWUucHVycG9zZUNvbnNlbnRzWzFdO3JldHVybiB0PT09ITA/ITA6dD09PSExfHx0PT1udWxsPyExOnZvaWQgMH1jYXRjaChlKXtyZXR1cm59fXNldEludGVybmFsQ29va2llKGUsdCxuKXt0aGlzLmRpc2FibGV8fCh0aGlzLl92ZXJpZnlJbnRlcm5hbEtleShlKSx0aGlzLl9zZXRDb29raWVWYWx1ZShgaW50ZXJuYWxgLGUsdCxuKSl9c2V0RXh0ZXJuYWxDb29raWUoZSx0LG4pe3RoaXMuZGlzYWJsZXx8dGhpcy5fc2V0Q29va2llVmFsdWUoYGV4dGVybmFsYCxlLHQsbil9c2V0SW50ZXJuYWxMb2NhbFN0b3JhZ2UoZSx0KXtpZighdGhpcy5kaXNhYmxlKWlmKHRoaXMuX3ZlcmlmeUludGVybmFsS2V5KGUpLHRoaXMuX2dkcHImJnRoaXMuX3Nob3VsZFF1ZXVlKXtsZXQgbj17a2V5OmUsdmFsdWU6dCx0eXBlOmBpbnRlcm5hbGB9O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49dHlwZW9mIHQ9PWBzdHJpbmdgP3Q6SlNPTi5zdHJpbmdpZnkodCk7d2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKGUsbil9fXNldEV4dGVybmFsTG9jYWxTdG9yYWdlKGUsdCl7aWYoIXRoaXMuZGlzYWJsZSlpZih0aGlzLl9nZHByJiZ0aGlzLl9zaG91bGRRdWV1ZSl7bGV0IG49e2tleTplLHZhbHVlOnQsdHlwZTpgZXh0ZXJuYWxgfTt0aGlzLl9sb2NhbFN0b3JhZ2VIYW5kbGVyUXVldWUucHVzaChuKX1lbHNle2xldCBuPXR5cGVvZiB0PT1gc3RyaW5nYD90OkpTT04uc3RyaW5naWZ5KHQpO3dpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShlLG4pfX1zZXRFeHBpcmFibGVJbnRlcm5hbExvY2FsU3RvcmFnZShlLHQsbil7aWYoIXRoaXMuZGlzYWJsZSl7dGhpcy5fdmVyaWZ5SW50ZXJuYWxLZXkoZSk7dHJ5e3ZhciByLGk7bGV0IGE9KHI9bj09bnVsbD92b2lkIDA6bi5leHBpcnkpPT1udWxsP3t2YWx1ZTo0MDAsdW5pdDpgZGF5c2B9OnIsbz0oaT1uPT1udWxsP3ZvaWQgMDpuLnJlc2V0T25SZWFkKT09bnVsbD8hMTppO2lmKHRoaXMuX2dkcHImJnRoaXMuX3Nob3VsZFF1ZXVlKXtsZXQgbj17a2V5OmUsdmFsdWU6dCx0eXBlOmBpbnRlcm5hbGAsZXhwaXJlczp0aGlzLl9nZXRFeHBpcnlEYXRlKGEpLGV4cGlyeTphLHJlc2V0T25SZWFkOm99O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49e3ZhbHVlOnQsdHlwZTpgaW50ZXJuYWxgLGV4cGlyZXM6dGhpcy5fZ2V0RXhwaXJ5RGF0ZShhKSxleHBpcnk6YSxyZXNldE9uUmVhZDpvfTt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShuKSl9fWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fX1zZXRFeHBpcmFibGVFeHRlcm5hbExvY2FsU3RvcmFnZShlLHQsbil7aWYoIXRoaXMuZGlzYWJsZSl0cnl7dmFyIHIsaTtsZXQgYT0ocj1uPT1udWxsP3ZvaWQgMDpuLmV4cGlyeSk9PW51bGw/e3ZhbHVlOjQwMCx1bml0OmBkYXlzYH06cixvPShpPW49PW51bGw/dm9pZCAwOm4ucmVzZXRPblJlYWQpPT1udWxsPyExOmk7aWYodGhpcy5fZ2RwciYmdGhpcy5fc2hvdWxkUXVldWUpe2xldCBuPXtrZXk6ZSx2YWx1ZTpKU09OLnN0cmluZ2lmeSh0KSx0eXBlOmBleHRlcm5hbGAsZXhwaXJlczp0aGlzLl9nZXRFeHBpcnlEYXRlKGEpLGV4cGlyeTphLHJlc2V0T25SZWFkOm99O3RoaXMuX2xvY2FsU3RvcmFnZUhhbmRsZXJRdWV1ZS5wdXNoKG4pfWVsc2V7bGV0IG49e3ZhbHVlOnQsdHlwZTpgZXh0ZXJuYWxgLGV4cGlyZXM6dGhpcy5fZ2V0RXhwaXJ5RGF0ZShhKSxleHBpcnk6YSxyZXNldE9uUmVhZDpvfTt3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShuKSl9fWNhdGNoKGUpe2NvbnNvbGUuZXJyb3IoZSl9fXNldFNlc3Npb25TdG9yYWdlKGUsdCl7aWYoIXRoaXMuZGlzYWJsZSlpZih0aGlzLl9nZHByJiZ0aGlzLl9zaG91bGRRdWV1ZSl7bGV0IG49e2tleTplLHZhbHVlOnR9O3RoaXMuX3Nlc3Npb25TdG9yYWdlSGFuZGxlclF1ZXVlLnB1c2gobil9ZWxzZXtsZXQgbj10eXBlb2YgdD09YHN0cmluZ2A/dDpKU09OLnN0cmluZ2lmeSh0KTt3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShlLG4pfX1nZXRPclNldEFCR3JvdXBMb2NhbFN0b3JhZ2VWYWx1ZShlLHQsbixyLGk9ITApe2xldCBhPWBhZHRocml2ZV9hYmdyb3VwYCxvPXRoaXMucmVhZEludGVybmFsTG9jYWxTdG9yYWdlKGEpO2lmKG8hPT1udWxsKXt2YXIgcztsZXQgdD1vW2VdLG49KHM9b1tgJHtlfV93ZWlnaHRgXSk9PW51bGw/bnVsbDpzO2lmKHRoaXMuX2lzVmFsaWRBQkdyb3VwTG9jYWxTdG9yYWdlVmFsdWUodCkpcmV0dXJuW3Qsbl19bGV0IGM9SyhLKHt9LG8pLHt9LHtbZV06dCxbYCR7ZX1fd2VpZ2h0YF06bn0pO3JldHVybiByP3RoaXMuc2V0RXhwaXJhYmxlSW50ZXJuYWxMb2NhbFN0b3JhZ2UoYSxjLHtleHBpcnk6cixyZXNldE9uUmVhZDppfSk6dGhpcy5zZXRJbnRlcm5hbExvY2FsU3RvcmFnZShhLGMpLFt0LG5dfV9pc1ZhbGlkQUJHcm91cExvY2FsU3RvcmFnZVZhbHVlKGUpe3JldHVybiBlIT1udWxsJiYhKHR5cGVvZiBlPT1gbnVtYmVyYCYmaXNOYU4oZSkpfV9nZXRFeHBpcnlEYXRlKHt2YWx1ZTplLHVuaXQ6dH0pe2xldCBuPW5ldyBEYXRlO3JldHVybiB0PT09YG1pbGxpc2Vjb25kc2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UpOnQ9PWBzZWNvbmRzYD9uLnNldFRpbWUobi5nZXRUaW1lKCkrZSoxZTMpOnQ9PT1gbWludXRlc2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UqNjAqMWUzKTp0PT09YGhvdXJzYD9uLnNldFRpbWUobi5nZXRUaW1lKCkrZSo2MCo2MCoxZTMpOnQ9PT1gZGF5c2A/bi5zZXRUaW1lKG4uZ2V0VGltZSgpK2UqMjQqNjAqNjAqMWUzKTp0PT09YG1vbnRoc2AmJm4uc2V0VGltZShuLmdldFRpbWUoKStlKjMwKjI0KjYwKjYwKjFlMyksbi50b1VUQ1N0cmluZygpfV9yZXNldEV4cGlyeShlKXtyZXR1cm4gZS5leHBpcmVzPXRoaXMuX2dldEV4cGlyeURhdGUoZS5leHBpcnkpLGV9X3JlYWRDb29raWUoZSl7bGV0IHQ9ZG9jdW1lbnQuY29va2llLnNwbGl0KGA7IGApLmZpbmQodD0+dC5zcGxpdChgPWApWzBdPT09ZSk7aWYoIXQpcmV0dXJuIG51bGw7bGV0IG49dC5zcGxpdChgPWApWzFdO2lmKG4pdHJ5e3JldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChuKSl9Y2F0Y2goZSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChuKX1yZXR1cm4gbnVsbH1fcmVhZENvb2tpZUxpc3QoZSl7bGV0IHQ7Zm9yKGxldCBuIG9mIGRvY3VtZW50LmNvb2tpZS5zcGxpdChgO2ApKXtsZXRbciwuLi5pXT1uLnNwbGl0KGA9YCk7ci50cmltKCk9PT1lJiYodD1pLmpvaW4oYD1gKS50cmltKCkpfXJldHVybiB0JiZKU09OLnBhcnNlKHQpfHxbXX1fZ2V0Q29va2llcygpe2xldCBlPVtdO3JldHVybiBkb2N1bWVudC5jb29raWUuc3BsaXQoYDtgKS5mb3JFYWNoKHQ9PntsZXRbbixyXT10LnNwbGl0KGA9YCkubWFwKGU9PmUudHJpbSgpKTtlLnB1c2goe25hbWU6bix2YWx1ZTpyfSl9KSxlfV9yZWFkRnJvbUxvY2FsU3RvcmFnZShlKXtsZXQgdD13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oZSk7aWYoIXQpcmV0dXJuIG51bGw7dHJ5e2xldCByPUpTT04ucGFyc2UodCksaT1yLmV4cGlyZXMmJm5ldyBEYXRlKCkuZ2V0VGltZSgpPj1uZXcgRGF0ZShyLmV4cGlyZXMpLmdldFRpbWUoKTtpZihlPT09YGFkdGhyaXZlX2FiZ3JvdXBgJiZyLmNyZWF0ZWQpcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShlKSxudWxsO2lmKHIucmVzZXRPblJlYWQmJnIuZXhwaXJlcyYmIWkpe3ZhciBuO2xldCB0PXRoaXMuX3Jlc2V0RXhwaXJ5KHIpO3JldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oZSxKU09OLnN0cmluZ2lmeShyKSksKG49dC52YWx1ZSk9PW51bGw/dDpufWVsc2UgaWYoaSlyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGUpLG51bGw7aWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsYHZhbHVlYCkpdHJ5e3JldHVybiBKU09OLnBhcnNlKHIudmFsdWUpfWNhdGNoKGUpe3JldHVybiByLnZhbHVlfWVsc2UgcmV0dXJuIHJ9Y2F0Y2goZSl7cmV0dXJuIHR9fV9zZXRDb29raWVWYWx1ZShlLHQsbixyKXt0cnl7aWYodGhpcy5fZ2RwciYmdGhpcy5fc2hvdWxkUXVldWUpe2xldCByPXtrZXk6dCx2YWx1ZTpuLHR5cGU6ZX07dGhpcy5fY29va2llSGFuZGxlclF1ZXVlLnB1c2gocil9ZWxzZXt2YXIgaSxhLG87bGV0IGU9dGhpcy5fZ2V0RXhwaXJ5RGF0ZSgoaT1yPT1udWxsP3ZvaWQgMDpyLmV4cGlyeSk9PW51bGw/e3ZhbHVlOjQwMCx1bml0OmBkYXlzYH06aSkscz0oYT1yPT1udWxsP3ZvaWQgMDpyLnNhbWVTaXRlKT09bnVsbD9gTm9uZWA6YSxjPShvPXI9PW51bGw/dm9pZCAwOnIuc2VjdXJlKT09bnVsbD8hMDpvLGw9dHlwZW9mIG49PWBvYmplY3RgP0pTT04uc3RyaW5naWZ5KG4pOm47ZG9jdW1lbnQuY29va2llPWAke3R9PSR7bH07IFNhbWVTaXRlPSR7c307ICR7Yz9gU2VjdXJlO2A6YGB9IGV4cGlyZXM9JHtlfTsgcGF0aD0vYH19Y2F0Y2goZSl7fX1fdmVyaWZ5SW50ZXJuYWxLZXkoZSl7bGV0IHQ9ZS5zdGFydHNXaXRoKGBhZHRocml2ZV9gKSxuPWUuc3RhcnRzV2l0aChgYWR0X2ApO2lmKCF0JiYhbiYmIU10LmluY2x1ZGVzKGUpKXRocm93IEVycm9yKGBXaGVuIHJlYWRpbmcgYW4gaW50ZXJuYWwgY29va2llLCB0aGUga2V5IG11c3Qgc3RhcnQgd2l0aCAiYWR0aHJpdmVfIiBvciAiYWR0XyIgb3IgYmUgcGFydCBvZiB0aGUgYWxsb3dlZCBsZWdhY3kga2V5cy5gKX19LE50PWU9PntsZXQgdD01MzgxLG49ZS5sZW5ndGg7Zm9yKDtuOyl0PXQqMzNeZS5jaGFyQ29kZUF0KC0tbik7cmV0dXJuIHQ+Pj4wfSxQdD1lPT5OdChlKS50b1N0cmluZygxNiksRnQ9ZT0+e2lmKGU9PT1udWxsKXJldHVybiBudWxsO2xldCB0PWUubWFwKCh7Y2hvaWNlOmV9KT0+ZSk7cmV0dXJuIFB0KEpTT04uc3RyaW5naWZ5KHQpKX0sSXQ9KGUsdCk9Pnt2YXIgbixyO3JldHVybihuPShyPWUuZmluZCgoe2Nob2ljZTplfSk9PmU9PT10KSk9PW51bGw/dm9pZCAwOnIud2VpZ2h0KT09bnVsbD9udWxsOm59LEx0PWU9PmUhPW51bGwmJiEodHlwZW9mIGU9PWBudW1iZXJgJiZpc05hTihlKSksUnQ9KGUsdCk9PntsZXQgbj1GdChlLl9jaG9pY2VzKSxyPWUuX2V4cENvbmZpZ0FCR3JvdXA/ZS5fZXhwQ29uZmlnQUJHcm91cDplLmFiZ3JvdXAsaT1yP3IudG9Mb3dlckNhc2UoKTplLmtleT9lLmtleS50b0xvd2VyQ2FzZSgpOmBgLGE9bj9gJHtpfV8ke259YDppLG89ZS5sb2NhbFN0b3JhZ2VQcmVmaXg/YCR7ZS5sb2NhbFN0b3JhZ2VQcmVmaXh9LSR7YX1gOmEscz1gZ2RwckVuYWJsZWRgaW4gd2luZG93LmFkdGhyaXZlP3dpbmRvdy5hZHRocml2ZS5nZHByRW5hYmxlZDp3aW5kb3cuYWR0aHJpdmUuZ2Rwcj09PWB0cnVlYDtpZihbSi5BZExheW91dCxKLkFkRGVuc2l0eV0uaW5jbHVkZXMoaSkmJnMpcmV0dXJuIHQoKTtsZXQgYz1ZLnJlYWRJbnRlcm5hbExvY2FsU3RvcmFnZShgYWR0aHJpdmVfYnJhbmNoYCk7KGMmJmMuZW5hYmxlZCk9PT0hMSYmWS5kZWxldGVMb2NhbFN0b3JhZ2Uobyk7bGV0IGw9dCgpLHU9SXQoZS5fY2hvaWNlcyxsKSxbZCxmXT1ZLmdldE9yU2V0QUJHcm91cExvY2FsU3RvcmFnZVZhbHVlKG8sbCx1LHt2YWx1ZToyNCx1bml0OmBob3Vyc2B9KTtyZXR1cm4gZS5fc3RpY2t5UmVzdWx0PWQsZS5fc3RpY2t5V2VpZ2h0PWYsZH0senQ9KCk9PihlLHQsbik9PntsZXQgcj1uLnZhbHVlO3ImJihuLnZhbHVlPWZ1bmN0aW9uKC4uLmUpe3JldHVybiBSdCh0aGlzLCgpPT5yLmFwcGx5KHRoaXMsZSkpfSl9LEJ0PShlPXdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpPT57bGV0IHQ9ZS5pbmRleE9mKGA/YCk9PT0wPzE6MDtyZXR1cm4gZS5zbGljZSh0KS5zcGxpdChgJmApLnJlZHVjZSgoZSx0KT0+e2xldFtuLHJdPXQuc3BsaXQoYD1gKTtyZXR1cm4gZS5zZXQobixyKSxlfSxuZXcgTWFwKX0sVnQ9ZT0+e2xldCB0PXt9LG49QnQoKS5nZXQoZSk7aWYobil0cnl7bGV0IHI9ZGVjb2RlVVJJQ29tcG9uZW50KG4pLnJlcGxhY2UoL1wrL2csYGApO3Q9SlNPTi5wYXJzZShyKSxVLmV2ZW50KGBFeHBlcmltZW50T3ZlcnJpZGVzVXRpbGAsYGdldEV4cGVyaW1lbnRPdmVycmlkZXNgLGUsdCl9Y2F0Y2goZSl7ZSBpbnN0YW5jZW9mIFVSSUVycm9yfXJldHVybiB0fSxIdD0oZSx0KT0+dHlwZW9mIGU9PXR5cGVvZiB0LFV0PShlLHQpPT57bGV0IG49ZS5hZERlbnNpdHlFbmFibGVkLHI9ZS5hZERlbnNpdHlMYXlvdXQucGFnZU92ZXJyaWRlcy5maW5kKGU9PiEhZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlLnBhZ2VTZWxlY3RvcikmJihlW3RdLm9uZVBlclZpZXdwb3J0fHx0eXBlb2YgZVt0XS5hZERlbnNpdHk9PWBudW1iZXJgKSk7cmV0dXJuIG4/IXI6ITB9LFd0PWU9Pnt2YXIgdDtsZXQgbj0odD1lLnZpZGVvUGxheWVycyk9PW51bGx8fCh0PXQucGFydG5lcnMpPT1udWxsfHwodD10LnN0aWNreU91dHN0cmVhbSk9PW51bGw/dm9pZCAwOnQuYmxvY2tlZFBhZ2VTZWxlY3RvcnM7cmV0dXJuIG4/IWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iobik6ITB9LEd0PWU9PntsZXQgdD1lLmFkT3B0aW9ucy5pbnRlcnN0aXRpYWxCbG9ja2VkUGFnZVNlbGVjdG9ycztyZXR1cm4gdD8hZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTohMH0sS3Q9KGUsdCxuKT0+e3N3aXRjaCh0KXtjYXNlIEouQWREZW5zaXR5OnJldHVybiBVdChlLG4pO2Nhc2UgSi5TdGlja3lPdXRzdHJlYW06cmV0dXJuIFd0KGUpO2Nhc2UgSi5JbnRlcnN0aXRpYWw6cmV0dXJuIEd0KGUpO2RlZmF1bHQ6cmV0dXJuITB9fSxxdD1lPT5lLmxlbmd0aD09PTEsSnQ9ZT0+e2xldCB0PWUucmVkdWNlKChlLHQpPT50LndlaWdodD90LndlaWdodCtlOmUsMCk7cmV0dXJuIGUubGVuZ3RoPjAmJmUuZXZlcnkoZT0+e2xldCB0PWUudmFsdWUsbj1lLndlaWdodDtyZXR1cm4hISh0IT1udWxsJiYhKHR5cGVvZiB0PT1gbnVtYmVyYCYmaXNOYU4odCkpJiZuKX0pJiZ0PT09MTAwfSxZdD0oZSx0KT0+e2lmKCFlKXJldHVybiExO2xldCBuPSEhZS5lbmFibGVkLHI9ZS5kYXRlU3RhcnQ9PW51bGx8fERhdGUubm93KCk+PWUuZGF0ZVN0YXJ0LGk9ZS5kYXRlRW5kPT1udWxsfHxEYXRlLm5vdygpPD1lLmRhdGVFbmQsYT1lLnNlbGVjdG9yPT09bnVsbHx8ZS5zZWxlY3RvciE9PWBgJiYhIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZS5zZWxlY3Rvciksbz1lLnBsYXRmb3JtPT09YG1vYmlsZWAmJnQ9PT1gbW9iaWxlYCxzPWUucGxhdGZvcm09PT1gZGVza3RvcGAmJnQ9PT1gZGVza3RvcGAsYz1lLnBsYXRmb3JtPT09bnVsbHx8ZS5wbGF0Zm9ybT09PWBhbGxgfHxvfHxzLGw9ZS5leHBlcmltZW50VHlwZT09PWBiZXJub3VsbGlUcmlhbGA/cXQoZS52YXJpYW50cyk6SnQoZS52YXJpYW50cyk7cmV0dXJuIGx8fFUuZXJyb3IoYFNpdGVUZXN0YCxgdmFsaWRhdGVTaXRlRXhwZXJpbWVudGAsYGV4cGVyaW1lbnQgcHJlc2VudGVkIGludmFsaWQgY2hvaWNlcyBmb3Iga2V5OmAsZS5rZXksZS52YXJpYW50cyksbiYmciYmaSYmYSYmYyYmbH07dmFyIFg9Y2xhc3N7Y29uc3RydWN0b3IoZSl7dmFyIHQsbjtJKHRoaXMsYHNpdGVFeHBlcmltZW50c2AsW10pLEkodGhpcyxgX2Nsc09wdGlvbnNgLHZvaWQgMCksSSh0aGlzLGBfZGV2aWNlYCx2b2lkIDApLHRoaXMuX2Nsc09wdGlvbnM9ZSx0aGlzLl9kZXZpY2U9UigpP2Btb2JpbGVgOmBkZXNrdG9wYCx0aGlzLnNpdGVFeHBlcmltZW50cz0odD0obj10aGlzLl9jbHNPcHRpb25zLnNpdGVBZHMuc2l0ZUV4cGVyaW1lbnRzKT09bnVsbD92b2lkIDA6bi5maWx0ZXIoZT0+e2xldCB0PWUua2V5LG49WXQoZSx0aGlzLl9kZXZpY2UpLHI9S3QodGhpcy5fY2xzT3B0aW9ucy5zaXRlQWRzLHQsdGhpcy5fZGV2aWNlKTtyZXR1cm4gbiYmcn0pKT09bnVsbD9bXTp0fWdldFNpdGVFeHBlcmltZW50QnlLZXkoZSl7bGV0IHQ9dGhpcy5zaXRlRXhwZXJpbWVudHMuZmlsdGVyKHQ9PnQua2V5LnRvTG93ZXJDYXNlKCk9PT1lLnRvTG93ZXJDYXNlKCkpWzBdLG49VnQoYGF0X3NpdGVfZmVhdHVyZXNgKSxyPUh0KHQhPW51bGwmJnQudmFyaWFudHNbMV0/dD09bnVsbD92b2lkIDA6dC52YXJpYW50c1sxXS52YWx1ZTp0PT1udWxsP3ZvaWQgMDp0LnZhcmlhbnRzWzBdLnZhbHVlLG5bZV0pO3JldHVybiB0JiZuW2VdJiZyJiYodC52YXJpYW50cz1be2Rpc3BsYXlOYW1lOmB0ZXN0YCx2YWx1ZTpuW2VdLHdlaWdodDoxMDAsaWQ6MH1dKSx0fX0sWHQ9Y2xhc3N7Y29uc3RydWN0b3IoKXtJKHRoaXMsYGV4cGVyaW1lbnRDb25maWdgLHZvaWQgMCl9Z2V0IGVuYWJsZWQoKXtyZXR1cm4gdGhpcy5leHBlcmltZW50Q29uZmlnIT09dm9pZCAwfV9pc1ZhbGlkUmVzdWx0KGUsdD0oKT0+ITApe3JldHVybiB0KCkmJkx0KGUpfX0sWnQ9Y2xhc3MgZXh0ZW5kcyBYdHtjb25zdHJ1Y3RvciguLi5lKXtzdXBlciguLi5lKSxJKHRoaXMsYF9yZXN1bHRWYWxpZGF0b3JgLCgpPT4hMCl9X2lzVmFsaWRSZXN1bHQoZSl7cmV0dXJuIHN1cGVyLl9pc1ZhbGlkUmVzdWx0KGUsKCk9PnRoaXMuX3Jlc3VsdFZhbGlkYXRvcihlKXx8ZT09PWBjb250cm9sYCl9cnVuKCl7aWYoIXRoaXMuZW5hYmxlZClyZXR1cm4gVS5lcnJvcihgQ0xTV2VpZ2h0ZWRDaG9pY2VTaXRlRXhwZXJpbWVudGAsYHJ1bmAsYCgpID0+ICVvYCxgTm8gZXhwZXJpbWVudCBjb25maWcgZm91bmQuIERlZmF1bHRpbmcgdG8gY29udHJvbC5gKSxgY29udHJvbGA7aWYoIXRoaXMuX21hcHBlZENob2ljZXN8fHRoaXMuX21hcHBlZENob2ljZXMubGVuZ3RoPT09MClyZXR1cm4gVS5lcnJvcihgQ0xTV2VpZ2h0ZWRDaG9pY2VTaXRlRXhwZXJpbWVudGAsYHJ1bmAsYCgpID0+ICVvYCxgTm8gZXhwZXJpbWVudCB2YXJpYW50cyBmb3VuZC4gRGVmYXVsdGluZyB0byBjb250cm9sLmApLGBjb250cm9sYDtsZXQgZT1uZXcgcSh0aGlzLl9tYXBwZWRDaG9pY2VzKS5nZXQoKTtyZXR1cm4gdGhpcy5faXNWYWxpZFJlc3VsdChlKT9lOihVLmVycm9yKGBDTFNXZWlnaHRlZENob2ljZVNpdGVFeHBlcmltZW50YCxgcnVuYCxgKCkgPT4gJW9gLGBJbnZhbGlkIHJlc3VsdCBmcm9tIGV4cGVyaW1lbnQgY2hvaWNlcy4gRGVmYXVsdGluZyB0byBjb250cm9sLmApLGBjb250cm9sYCl9fTtmdW5jdGlvbiBRdChlLHQsbixyKXt2YXIgaT1hcmd1bWVudHMubGVuZ3RoLGE9aTwzP3Q6cj09PW51bGw/cj1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsbik6cixvO2lmKHR5cGVvZiBSZWZsZWN0PT1gb2JqZWN0YCYmdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGU9PWBmdW5jdGlvbmApYT1SZWZsZWN0LmRlY29yYXRlKGUsdCxuLHIpO2Vsc2UgZm9yKHZhciBzPWUubGVuZ3RoLTE7cz49MDtzLS0pKG89ZVtzXSkmJihhPShpPDM/byhhKTppPjM/byh0LG4sYSk6byh0LG4pKXx8YSk7cmV0dXJuIGk+MyYmYSYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbixhKSxhfXZhciAkdD1jbGFzcyBleHRlbmRzIFp0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksSSh0aGlzLGBfY2hvaWNlc2AsW10pLEkodGhpcyxgX21hcHBlZENob2ljZXNgLFtdKSxJKHRoaXMsYF9yZXN1bHRgLGBgKSxJKHRoaXMsYF9jbHNTaXRlRXhwZXJpbWVudHNgLHZvaWQgMCksSSh0aGlzLGBfcmVzdWx0VmFsaWRhdG9yYCxlPT50eXBlb2YgZT09YHN0cmluZ2ApLEkodGhpcyxga2V5YCxKLkFkTGF5b3V0KSxJKHRoaXMsYGFiZ3JvdXBgLEouQWRMYXlvdXQpLHRoaXMuX2Nsc1NpdGVFeHBlcmltZW50cz1uZXcgWChlKSx0aGlzLmV4cGVyaW1lbnRDb25maWc9dGhpcy5fY2xzU2l0ZUV4cGVyaW1lbnRzLmdldFNpdGVFeHBlcmltZW50QnlLZXkodGhpcy5rZXkpLHRoaXMuZW5hYmxlZCYmdGhpcy5leHBlcmltZW50Q29uZmlnJiYodGhpcy5fY2hvaWNlcz10aGlzLmV4cGVyaW1lbnRDb25maWcudmFyaWFudHMsdGhpcy5fbWFwcGVkQ2hvaWNlcz10aGlzLl9tYXBDaG9pY2VzKCksdGhpcy5fcmVzdWx0PXRoaXMucnVuKCksZS5zZXRXZWlnaHRlZENob2ljZUV4cGVyaW1lbnQodGhpcy5hYmdyb3VwLHRoaXMuX3Jlc3VsdCwhMCkpfWdldCByZXN1bHQoKXtyZXR1cm4gdGhpcy5fcmVzdWx0fXJ1bigpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIFUuZXJyb3IoYENMU0FkTGF5b3V0U2l0ZUV4cGVyaW1lbnRgLGBydW5gLGAoKSA9PiAlb2AsYE5vIGV4cGVyaW1lbnQgY29uZmlnIGZvdW5kLiBEZWZhdWx0aW5nIHRvIGVtcHR5IGNsYXNzIG5hbWUuYCksYGA7bGV0IGU9bmV3IHEodGhpcy5fbWFwcGVkQ2hvaWNlcykuZ2V0KCk7cmV0dXJuIHRoaXMuX2lzVmFsaWRSZXN1bHQoZSk/ZTooVS5lcnJvcihgQ0xTQWRMYXlvdXRTaXRlRXhwZXJpbWVudGAsYHJ1bmAsYCgpID0+ICVvYCxgSW52YWxpZCByZXN1bHQgZnJvbSBleHBlcmltZW50IGNob2ljZXMuIERlZmF1bHRpbmcgdG8gZW1wdHkgY2xhc3MgbmFtZS5gKSxgYCl9X21hcENob2ljZXMoKXtyZXR1cm4gdGhpcy5fY2hvaWNlcy5tYXAoKHt3ZWlnaHQ6ZSx2YWx1ZTp0fSk9Pih7d2VpZ2h0OmUsY2hvaWNlOnR9KSl9fTtRdChbenQoKV0sJHQucHJvdG90eXBlLGBydW5gLG51bGwpO3ZhciBlbj1jbGFzcyBleHRlbmRzIFp0e2NvbnN0cnVjdG9yKGUpe3N1cGVyKCksSSh0aGlzLGBfY2hvaWNlc2AsW10pLEkodGhpcyxgX21hcHBlZENob2ljZXNgLFtdKSxJKHRoaXMsYF9yZXN1bHRgLGBjb250cm9sYCksSSh0aGlzLGBfY2xzU2l0ZUV4cGVyaW1lbnRzYCx2b2lkIDApLEkodGhpcyxgX3Jlc3VsdFZhbGlkYXRvcmAsZT0+dHlwZW9mIGU9PWBudW1iZXJgKSxJKHRoaXMsYGtleWAsSi5BZERlbnNpdHkpLEkodGhpcyxgYWJncm91cGAsSi5BZERlbnNpdHkpLHRoaXMuX2Nsc1NpdGVFeHBlcmltZW50cz1uZXcgWChlKSx0aGlzLmV4cGVyaW1lbnRDb25maWc9dGhpcy5fY2xzU2l0ZUV4cGVyaW1lbnRzLmdldFNpdGVFeHBlcmltZW50QnlLZXkodGhpcy5rZXkpLHRoaXMuZW5hYmxlZCYmdGhpcy5leHBlcmltZW50Q29uZmlnJiYodGhpcy5fY2hvaWNlcz10aGlzLmV4cGVyaW1lbnRDb25maWcudmFyaWFudHMsdGhpcy5fbWFwcGVkQ2hvaWNlcz10aGlzLl9tYXBDaG9pY2VzKCksdGhpcy5fcmVzdWx0PXRoaXMucnVuKCksZS5zZXRXZWlnaHRlZENob2ljZUV4cGVyaW1lbnQodGhpcy5hYmdyb3VwLHRoaXMuX3Jlc3VsdCwhMCkpfWdldCByZXN1bHQoKXtyZXR1cm4gdGhpcy5fcmVzdWx0fXJ1bigpe2lmKCF0aGlzLmVuYWJsZWQpcmV0dXJuIFUuZXJyb3IoYENMU1RhcmdldEFkRGVuc2l0eVNpdGVFeHBlcmltZW50YCxgcnVuYCxgKCkgPT4gJW9gLGBObyBleHBlcmltZW50IGNvbmZpZyBmb3VuZC4gRGVmYXVsdGluZyB0byBjb250cm9sLmApLGBjb250cm9sYDtsZXQgZT1uZXcgcSh0aGlzLl9tYXBwZWRDaG9pY2VzKS5nZXQoKTtyZXR1cm4gdGhpcy5faXNWYWxpZFJlc3VsdChlKT9lOihVLmVycm9yKGBDTFNUYXJnZXRBZERlbnNpdHlTaXRlRXhwZXJpbWVudGAsYHJ1bmAsYCgpID0+ICVvYCxgSW52YWxpZCByZXN1bHQgZnJvbSBleHBlcmltZW50IGNob2ljZXMuIERlZmF1bHRpbmcgdG8gY29udHJvbC5gKSxgY29udHJvbGApfV9tYXBDaG9pY2VzKCl7cmV0dXJuIHRoaXMuX2Nob2ljZXMubWFwKCh7d2VpZ2h0OmUsdmFsdWU6dH0pPT4oe3dlaWdodDplLGNob2ljZTp0eXBlb2YgdD09YG51bWJlcmA/KHR8fDApLzEwMDpgY29udHJvbGB9KSl9fTtRdChbenQoKV0sZW4ucHJvdG90eXBlLGBydW5gLG51bGwpO2xldCBaPWAyNTBweGA7dmFyIHRuPWNsYXNze2NvbnN0cnVjdG9yKGUsdCl7dGhpcy5fY2xzT3B0aW9ucz1lLHRoaXMuX2FkSW5qZWN0aW9uTWFwPXQsSSh0aGlzLGBfcmVjaXBlQ291bnRgLDApLEkodGhpcyxgX21haW5Db250ZW50SGVpZ2h0YCwwKSxJKHRoaXMsYF9tYWluQ29udGVudERpdmAsbnVsbCksSSh0aGlzLGBfdG90YWxBdmFpbGFibGVFbGVtZW50c2AsW10pLEkodGhpcyxgX21pbkRpdkhlaWdodGAsMjUwKSxJKHRoaXMsYF9kZW5zaXR5RGV2aWNlYCxXLkRlc2t0b3ApLEkodGhpcyxgX3B1YkxvZ2Ase29uZVBlclZpZXdwb3J0OiExLHRhcmdldERlbnNpdHk6MCx0YXJnZXREZW5zaXR5VW5pdHM6MCxjb21iaW5lZE1heDowfSksSSh0aGlzLGBfZGVuc2l0eU1heGAsLjk5KSxJKHRoaXMsYF9zbWFsbGVySW5jcmVtZW50QXR0ZW1wdHNgLDApLEkodGhpcyxgX2Fic29sdXRlTWluaW11bVNwYWNpbmdCeURldmljZWAsMjUwKSxJKHRoaXMsYF91c2VkQWJzb2x1dGVNaW5pbXVtYCwhMSksSSh0aGlzLGBfaW5mUGFnZUVuZE9mZnNldGAsMCksSSh0aGlzLGBsb2NhdGlvbk1heExhenlTZXF1ZW5jZWAsbmV3IE1hcChbW1AuUmVjaXBlLDVdXSkpLEkodGhpcyxgbG9jYXRpb25Ub01pbkhlaWdodGAse0JlbG93X1Bvc3Q6WixDb250ZW50OlosUmVjaXBlOlosU2lkZWJhcjpafSksSSh0aGlzLGBfZGV2aWNlYCx2b2lkIDApLEkodGhpcyxgX2Nsc1RhcmdldEFkRGVuc2l0eVNpdGVFeHBlcmltZW50YCx2b2lkIDApO2xldHt0YWJsZXQ6bixkZXNrdG9wOnJ9PXRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcy5icmVha3BvaW50czt0aGlzLl9kZXZpY2U9dXQobixyKSx0aGlzLl9jbHNUYXJnZXRBZERlbnNpdHlTaXRlRXhwZXJpbWVudD10aGlzLl9jbHNPcHRpb25zLnNpdGVBZHMuc2l0ZUV4cGVyaW1lbnRzP25ldyBlbih0aGlzLl9jbHNPcHRpb25zKTpudWxsfXN0YXJ0KCl7dHJ5e3ZhciBlO2N0KHRoaXMuX2RldmljZSk7bGV0IG49bmV3ICR0KHRoaXMuX2Nsc09wdGlvbnMpO2lmKG4uZW5hYmxlZCl7bGV0IGU9bi5yZXN1bHQsdD1lLnN0YXJ0c1dpdGgoYC5gKT9lLnN1YnN0cmluZygxKTplO2lmKFR0KHQpKXRyeXtkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQodCl9Y2F0Y2goZSl7VS5lcnJvcihgQ2xzRHluYW1pY0Fkc0luamVjdG9yYCxgc3RhcnRgLGBVbmNhdWdodCBDU1MgQ2xhc3MgZXJyb3I6ICR7ZX1gKX1lbHNlIFUuZXJyb3IoYENsc0R5bmFtaWNBZHNJbmplY3RvcmAsYHN0YXJ0YCxgSW52YWxpZCBjbGFzcyBuYW1lOiAke3R9YCl9bGV0IHI9aXQodGhpcy5fZGV2aWNlLHRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcykuZmlsdGVyKGU9PnRoaXMuX2xvY2F0aW9uRW5hYmxlZChlKSkuZmlsdGVyKGU9Pm90KGUsdGhpcy5fZGV2aWNlKSkuZmlsdGVyKGU9PnN0KGUpKSxpPXRoaXMuaW5qZWN0KHIpLGE9dGhpcy5fY2xzT3B0aW9ucy5zaXRlQWRzLmFkT3B0aW9ucy5zdGlja3lDb250YWluZXJDb25maWc7aWYoIShhPT1udWxsfHwoZT1hLmNvbnRlbnQpPT1udWxsKSYmZS5lbmFibGVkJiYhd3QoYS5ibG9ja2VkU2VsZWN0b3JzfHxbXSkpe3ZhciB0O1N0KGE9PW51bGx8fCh0PWEuY29udGVudCk9PW51bGw/dm9pZCAwOnQubWluSGVpZ2h0KX1pLmZvckVhY2goZT0+dGhpcy5fY2xzT3B0aW9ucy5zZXRJbmplY3RlZFNsb3RzKGUpKX1jYXRjaChlKXtVLmVycm9yKGBDbHNEeW5hbWljQWRzSW5qZWN0b3JgLGBzdGFydGAsZSl9fWluamVjdChlLHQ9ZG9jdW1lbnQpe3RoaXMuX2RlbnNpdHlEZXZpY2U9dGhpcy5fZGV2aWNlPT09YGRlc2t0b3BgP1cuRGVza3RvcDpXLk1vYmlsZSx0aGlzLl9vdmVycmlkZURlZmF1bHRBZERlbnNpdHlTZXR0aW5nc1dpdGhTaXRlRXhwZXJpbWVudCgpO2xldCBuPXRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcyxyPVYobi5hZERlbnNpdHlFbmFibGVkLCEwKSxpPW4uYWREZW5zaXR5TGF5b3V0JiZyLGE9ZS5maWx0ZXIoZT0+aT9lLmxvY2F0aW9uIT09UC5Db250ZW50OmUpLG89ZS5maWx0ZXIoZT0+aT9lLmxvY2F0aW9uPT09UC5Db250ZW50Om51bGwpO3JldHVybiB0aGlzLl9jYXB0dXJlUHJlU2xvdEluc2VydGlvblBhZ2VBcmVhTWVhc3VyZW1lbnQoKSxbLi4uYS5sZW5ndGg/dGhpcy5faW5qZWN0Tm9uRGVuc2l0eVNsb3RzKGEsdCk6W10sLi4uby5sZW5ndGg/dGhpcy5faW5qZWN0RGVuc2l0eVNsb3RzKG8sdCk6W11dfV9pbmplY3ROb25EZW5zaXR5U2xvdHMoZSx0PWRvY3VtZW50KXt2YXIgbjtsZXQgcj1bXSxpPVtdLGE9ITE7aWYoZS5zb21lKGU9PmUubG9jYXRpb249PT1QLlJlY2lwZSYmZS5zdGlja3kpJiYhd3QoKChuPXRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcy5hZE9wdGlvbnMuc3RpY2t5Q29udGFpbmVyQ29uZmlnKT09bnVsbD92b2lkIDA6bi5ibG9ja2VkU2VsZWN0b3JzKXx8W10pKXt2YXIgbyxzO2xldCBlPXRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcy5hZE9wdGlvbnMuc3RpY2t5Q29udGFpbmVyQ29uZmlnO0N0KHRoaXMuX2RldmljZT09PWBwaG9uZWA/ZT09bnVsbHx8KG89ZS5yZWNpcGVNb2JpbGUpPT1udWxsP3ZvaWQgMDpvLm1pbkhlaWdodDplPT1udWxsfHwocz1lLnJlY2lwZURlc2t0b3ApPT1udWxsP3ZvaWQgMDpzLm1pbkhlaWdodCksYT0hMH1mb3IobGV0IG4gb2YgZSl0aGlzLl9pbnNlcnROb25EZW5zaXR5QWRzKG4scixpLHQpO3JldHVybiBhfHxpLmZvckVhY2goKHtsb2NhdGlvbjplLGVsZW1lbnQ6dH0pPT57dC5zdHlsZS5taW5IZWlnaHQ9dGhpcy5sb2NhdGlvblRvTWluSGVpZ2h0W2VdfSkscn1faW5qZWN0RGVuc2l0eVNsb3RzKGUsdD1kb2N1bWVudCl7dHJ5e3RoaXMuX2NhbGN1bGF0ZU1haW5Db250ZW50SGVpZ2h0QW5kQWxsRWxlbWVudHMoZSx0KSx0aGlzLl9jYXB0dXJlUHJlU2xvdEluc2VydGlvbk1haW5Db250ZW50TWVhc3VyZW1lbnQoKX1jYXRjaChlKXtyZXR1cm5bXX1sZXR7b25lUGVyVmlld3BvcnQ6bix0YXJnZXRBbGw6cix0YXJnZXREZW5zaXR5VW5pdHM6aSxjb21iaW5lZE1heDphLG51bWJlck9mVW5pdHM6b309dGhpcy5fZ2V0RGVuc2l0eVNldHRpbmdzKGUsdCk7cmV0dXJuIHRoaXMuX2Fic29sdXRlTWluaW11bVNwYWNpbmdCeURldmljZT1uP3dpbmRvdy5pbm5lckhlaWdodDp0aGlzLl9hYnNvbHV0ZU1pbmltdW1TcGFjaW5nQnlEZXZpY2Usbz8odGhpcy5fYWRJbmplY3Rpb25NYXAuZmlsdGVyVXNlZCgpLHRoaXMuX2ZpbmRFbGVtZW50c0ZvckFkcyhvLG4scixhLGksdCksdGhpcy5faW5zZXJ0QWRzKCkpOltdfV9vdmVycmlkZURlZmF1bHRBZERlbnNpdHlTZXR0aW5nc1dpdGhTaXRlRXhwZXJpbWVudCgpe3ZhciBlO2lmKChlPXRoaXMuX2Nsc1RhcmdldEFkRGVuc2l0eVNpdGVFeHBlcmltZW50KSE9bnVsbCYmZS5lbmFibGVkKXtsZXQgZT10aGlzLl9jbHNUYXJnZXRBZERlbnNpdHlTaXRlRXhwZXJpbWVudC5yZXN1bHQ7dHlwZW9mIGU9PWBudW1iZXJgJiYodGhpcy5fY2xzT3B0aW9ucy5zaXRlQWRzLmFkRGVuc2l0eUVuYWJsZWQ9ITAsdGhpcy5fY2xzT3B0aW9ucy5zaXRlQWRzLmFkRGVuc2l0eUxheW91dFt0aGlzLl9kZW5zaXR5RGV2aWNlXS5hZERlbnNpdHk9ZSl9fV9nZXREZW5zaXR5U2V0dGluZ3MoZSx0PWRvY3VtZW50KXtsZXQgbj10aGlzLl9jbHNPcHRpb25zLnNpdGVBZHMuYWREZW5zaXR5TGF5b3V0LHI9dGhpcy5fZGV0ZXJtaW5lT3ZlcnJpZGVzKG4ucGFnZU92ZXJyaWRlcyksaT1yLmxlbmd0aD9yWzBdOm5bdGhpcy5fZGVuc2l0eURldmljZV0sYT1pLmFkRGVuc2l0eSxvPWkub25lUGVyVmlld3BvcnQscz10aGlzLl9zaG91bGRUYXJnZXRBbGxFbGlnaWJsZShhKSxjPXRoaXMuX2dldFRhcmdldERlbnNpdHlVbml0cyhhLHMpLGw9dGhpcy5fZ2V0Q29tYmluZWRNYXgoZSx0KSx1PU1hdGgubWluKHRoaXMuX3RvdGFsQXZhaWxhYmxlRWxlbWVudHMubGVuZ3RoLGMsLi4ubD4wP1tsXTpbXSk7cmV0dXJuIHRoaXMuX3B1YkxvZz17b25lUGVyVmlld3BvcnQ6byx0YXJnZXREZW5zaXR5OmEsdGFyZ2V0RGVuc2l0eVVuaXRzOmMsY29tYmluZWRNYXg6bH0se29uZVBlclZpZXdwb3J0Om8sdGFyZ2V0QWxsOnMsdGFyZ2V0RGVuc2l0eVVuaXRzOmMsY29tYmluZWRNYXg6bCxudW1iZXJPZlVuaXRzOnV9fV9kZXRlcm1pbmVPdmVycmlkZXMoZSl7cmV0dXJuIGUuZmlsdGVyKGU9PntsZXQgdD1rdChlLnBhZ2VTZWxlY3Rvcik7cmV0dXJuIGUucGFnZVNlbGVjdG9yPT09YGB8fHQuZWxlbWVudHMmJnQuZWxlbWVudHMubGVuZ3RofSkubWFwKGU9PmVbdGhpcy5fZGVuc2l0eURldmljZV0pfV9zaG91bGRUYXJnZXRBbGxFbGlnaWJsZShlKXtyZXR1cm4gZT09PXRoaXMuX2RlbnNpdHlNYXh9X2dldFRhcmdldERlbnNpdHlVbml0cyhlLHQpe3JldHVybiB0P3RoaXMuX3RvdGFsQXZhaWxhYmxlRWxlbWVudHMubGVuZ3RoOk1hdGguZmxvb3IoZSp0aGlzLl9tYWluQ29udGVudEhlaWdodC8oMS1lKS90aGlzLl9taW5EaXZIZWlnaHQpLXRoaXMuX3JlY2lwZUNvdW50fV9nZXRDb21iaW5lZE1heChlLHQ9ZG9jdW1lbnQpe3JldHVybiBWKGUuZmlsdGVyKGU9PntsZXQgbjt0cnl7bj10LnF1ZXJ5U2VsZWN0b3IoZS5lbGVtZW50U2VsZWN0b3IpfWNhdGNoKGUpe31yZXR1cm4gbn0pLm1hcChlPT5OdW1iZXIoZS5tYXgpK051bWJlcihlLmxhenlNYXhEZWZhdWx0ZWQ/MDplLmxhenlNYXgpKS5zb3J0KChlLHQpPT50LWUpWzBdLDApfV9lbGVtZW50TGFyZ2VyVGhhbk1haW5Db250ZW50KGUpe3JldHVybiBlLm9mZnNldEhlaWdodD49dGhpcy5fbWFpbkNvbnRlbnRIZWlnaHQmJnRoaXMuX3RvdGFsQXZhaWxhYmxlRWxlbWVudHMubGVuZ3RoPjF9X2VsZW1lbnREaXNwbGF5Tm9uZShlKXtsZXQgdD13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlLG51bGwpLmRpc3BsYXk7cmV0dXJuIHQmJnQ9PT1gbm9uZWB8fGUuc3R5bGUuZGlzcGxheT09PWBub25lYH1faXNCZWxvd01heGVzKGUsdCl7cmV0dXJuIHRoaXMuX2FkSW5qZWN0aW9uTWFwLm1hcC5sZW5ndGg8ZSYmdGhpcy5fYWRJbmplY3Rpb25NYXAubWFwLmxlbmd0aDx0fV9maW5kRWxlbWVudHNGb3JBZHMoZSx0LG4scixpLGE9ZG9jdW1lbnQpe3RoaXMuX2Nsc09wdGlvbnMudGFyZ2V0RGVuc2l0eUxvZz17b25lUGVyVmlld3BvcnQ6dCxjb21iaW5lZE1heDpyLHRhcmdldERlbnNpdHlVbml0czppLHRhcmdldERlbnNpdHlQZXJjZW50YWdlOnRoaXMuX3B1YkxvZy50YXJnZXREZW5zaXR5LG1haW5Db250ZW50SGVpZ2h0OnRoaXMuX21haW5Db250ZW50SGVpZ2h0LHJlY2lwZUNvdW50OnRoaXMuX3JlY2lwZUNvdW50LG51bWJlck9mRWxzOnRoaXMuX3RvdGFsQXZhaWxhYmxlRWxlbWVudHMubGVuZ3RofTtsZXQgbz10PT57Zm9yKGxldHtkeW5hbWljQWQ6byxlbGVtZW50OnN9b2YgdGhpcy5fdG90YWxBdmFpbGFibGVFbGVtZW50cylpZih0aGlzLl9sb2dEZW5zaXR5SW5mbyhzLG8uZWxlbWVudFNlbGVjdG9yLHQpLCEoIW4mJnRoaXMuX2VsZW1lbnRMYXJnZXJUaGFuTWFpbkNvbnRlbnQocyl8fHRoaXMuX2VsZW1lbnREaXNwbGF5Tm9uZShzKSkpaWYodGhpcy5faXNCZWxvd01heGVzKHIsaSkpe2lmKHRoaXMuX2NoZWNrRWxlbWVudFNwYWNpbmcoe2R5bmFtaWNBZDpvLGVsZW1lbnQ6cyxpbnNlcnRFdmVyeTp0LHRhcmdldEFsbDpuLHRhcmdldDphfSksdGhpcy5faGFzUmVhY2hlZFF1b3RhKGUpKXJldHVybn1lbHNlIGJyZWFrO3RoaXMuX2hhc1JlYWNoZWRRdW90YShlKXx8IXRoaXMuX3VzZWRBYnNvbHV0ZU1pbmltdW0mJnRoaXMuX3NtYWxsZXJJbmNyZW1lbnRBdHRlbXB0czw1JiYoKyt0aGlzLl9zbWFsbGVySW5jcmVtZW50QXR0ZW1wdHMsbyh0aGlzLl9nZXRTbWFsbGVySW5jcmVtZW50KHQpKSl9O28odGhpcy5fZ2V0SW5zZXJ0RXZlcnkoZSx0LGkpKX1faGFzUmVhY2hlZFF1b3RhKGUpe3JldHVybiB0aGlzLl9hZEluamVjdGlvbk1hcC5tYXAubGVuZ3RoPj1lfV9nZXRTbWFsbGVySW5jcmVtZW50KGUpe2xldCB0PWUqLjY7cmV0dXJuIHQ8PXRoaXMuX2Fic29sdXRlTWluaW11bVNwYWNpbmdCeURldmljZSYmKHQ9dGhpcy5fYWJzb2x1dGVNaW5pbXVtU3BhY2luZ0J5RGV2aWNlLHRoaXMuX3VzZWRBYnNvbHV0ZU1pbmltdW09ITApLHR9X2luc2VydE5vbkRlbnNpdHlBZHMoZSx0LG4scj1kb2N1bWVudCl7bGV0IGk9MCxhPTAsbz0wO2Uuc3BhY2luZz4wJiYoaT13aW5kb3cuaW5uZXJIZWlnaHQqZS5zcGFjaW5nLGE9aSk7bGV0IHM9dGhpcy5fcmVwZWF0RHluYW1pY0FkcyhlKSxjPXRoaXMuZ2V0RWxlbWVudHMoZS5lbGVtZW50U2VsZWN0b3Iscik7ZS5za2lwO2ZvcihsZXQgbD1lLnNraXA7bDxjLmxlbmd0aCYmIShvKzE+cy5sZW5ndGgpO2wrPWUuZXZlcnkpe2xldCB1PWNbbF07aWYoaT4wKXtsZXR7Ym90dG9tOmV9PWR0KHUpO2lmKGU8PWEpY29udGludWU7YT1lK2l9bGV0IGQ9c1tvXSxmPWAke2QubG9jYXRpb259XyR7ZC5zZXF1ZW5jZX1gO3Quc29tZShlPT5lLm5hbWU9PT1mKSYmKG8rPTEpO2xldCBwPXRoaXMuZ2V0RHluYW1pY0VsZW1lbnRJZChkKSxtPUcoZSksaD1sdChlKSxnPVtlLmxvY2F0aW9uPT09UC5TaWRlYmFyJiZlLnN0aWNreSYmZS5zZXF1ZW5jZSYmZS5zZXF1ZW5jZTw9NT9gYWR0aHJpdmUtc3RpY2t5LXNpZGViYXJgOmBgLGUubG9jYXRpb249PT1QLlJlY2lwZSYmZS5zdGlja3k/YGFkdGhyaXZlLXJlY2lwZS1zdGlja3ktY29udGFpbmVyYDpgYCxtLGgsLi4uZS5jbGFzc05hbWVzXTtpZihFdCh1LGUucG9zaXRpb24sZS5sb2NhdGlvbikmJmUubG9jYXRpb249PT1QLlJlY2lwZSljb250aW51ZTtsZXQgXz10aGlzLmFkZEFkKHUscCxlLnBvc2l0aW9uLGcpO2lmKF8pe2xldCBpPWF0KGQsXyk7aWYoaS5sZW5ndGgpe2xldCBhPXtjbHNEeW5hbWljQWQ6ZSxkeW5hbWljQWQ6ZCxlbGVtZW50Ol8sc2l6ZXM6aSxuYW1lOmYsaW5maW5pdGU6ciE9PWRvY3VtZW50fTt0LnB1c2goYSksbi5wdXNoKHtsb2NhdGlvbjpkLmxvY2F0aW9uLGVsZW1lbnQ6X30pLGUubG9jYXRpb249PT1QLlJlY2lwZSYmKyt0aGlzLl9yZWNpcGVDb3VudCxvKz0xfXU9X319fV9pbnNlcnRBZHMoKXtsZXQgZT1bXSx0PTA7cmV0dXJuIHRoaXMuX2FkSW5qZWN0aW9uTWFwLmZpbHRlclVzZWQoKSx0aGlzLl9hZEluamVjdGlvbk1hcC5tYXAuZm9yRWFjaCgoe2VsOm4sZHluYW1pY0FkOnIsdGFyZ2V0Oml9LGEpPT57bGV0IG89TnVtYmVyKHIuc2VxdWVuY2UpK2Escz1yLm1heCxjPXIubGF6eSYmbz5zO3Iuc2VxdWVuY2U9byxyLmxhenk9YztsZXQgbD10aGlzLl9hZGRDb250ZW50QWQobixyLGkpO2wmJihyLnVzZWQ9ITAsZS5wdXNoKGwpLCsrdCl9KSxlfV9nZXRJbnNlcnRFdmVyeShlLHQsbil7bGV0IHI9dGhpcy5fYWJzb2x1dGVNaW5pbXVtU3BhY2luZ0J5RGV2aWNlO3JldHVybiB0aGlzLl9tb3JlQXZhaWxhYmxlRWxlbWVudHNUaGFuVW5pdHNUb0luamVjdChuLGUpPyh0aGlzLl91c2VkQWJzb2x1dGVNaW5pbXVtPSExLHI9dGhpcy5fdXNlV2lkZXJTcGFjaW5nKG4sZSkpOih0aGlzLl91c2VkQWJzb2x1dGVNaW5pbXVtPSEwLHI9dGhpcy5fdXNlU21hbGxlc3RTcGFjaW5nKHQpKSx0JiZ3aW5kb3cuaW5uZXJIZWlnaHQ+cj93aW5kb3cuaW5uZXJIZWlnaHQ6cn1fdXNlV2lkZXJTcGFjaW5nKGUsdCl7cmV0dXJuIHRoaXMuX21haW5Db250ZW50SGVpZ2h0L01hdGgubWluKGUsdCl9X3VzZVNtYWxsZXN0U3BhY2luZyhlKXtyZXR1cm4gZSYmd2luZG93LmlubmVySGVpZ2h0PnRoaXMuX2Fic29sdXRlTWluaW11bVNwYWNpbmdCeURldmljZT93aW5kb3cuaW5uZXJIZWlnaHQ6dGhpcy5fYWJzb2x1dGVNaW5pbXVtU3BhY2luZ0J5RGV2aWNlfV9tb3JlQXZhaWxhYmxlRWxlbWVudHNUaGFuVW5pdHNUb0luamVjdChlLHQpe3JldHVybiB0aGlzLl90b3RhbEF2YWlsYWJsZUVsZW1lbnRzLmxlbmd0aD5lfHx0aGlzLl90b3RhbEF2YWlsYWJsZUVsZW1lbnRzLmxlbmd0aD50fV9sb2dEZW5zaXR5SW5mbyhlLHQsbil7bGV0e29uZVBlclZpZXdwb3J0OnIsdGFyZ2V0RGVuc2l0eTppLHRhcmdldERlbnNpdHlVbml0czphLGNvbWJpbmVkTWF4Om99PXRoaXMuX3B1YkxvZzt0aGlzLl90b3RhbEF2YWlsYWJsZUVsZW1lbnRzLmxlbmd0aH1fY2hlY2tFbGVtZW50U3BhY2luZyh7ZHluYW1pY0FkOmUsZWxlbWVudDp0LGluc2VydEV2ZXJ5Om4sdGFyZ2V0QWxsOnIsdGFyZ2V0Omk9ZG9jdW1lbnR9KXsodGhpcy5faXNGaXJzdEFkSW5qZWN0ZWQoKXx8dGhpcy5faGFzUHJvcGVyU3BhY2luZyh0LGUscixuKSkmJnRoaXMuX21hcmtTcG90Rm9yQ29udGVudEFkKHQsSyh7fSxlKSxpKX1faXNGaXJzdEFkSW5qZWN0ZWQoKXtyZXR1cm4hdGhpcy5fYWRJbmplY3Rpb25NYXAubWFwLmxlbmd0aH1fbWFya1Nwb3RGb3JDb250ZW50QWQoZSx0LG49ZG9jdW1lbnQpe2xldCByPXQucG9zaXRpb249PT1gYmVmb3JlYmVnaW5gfHx0LnBvc2l0aW9uPT09YGFmdGVyYmVnaW5gO3RoaXMuX2FkSW5qZWN0aW9uTWFwLmFkZFNvcnRlZChlLHRoaXMuX2dldEVsZW1lbnRDb29yZHMoZSxyKSx0LG4pfV9oYXNQcm9wZXJTcGFjaW5nKGUsdCxuLHIpe2xldCBpPXQucG9zaXRpb249PT1gYmVmb3JlYmVnaW5gfHx0LnBvc2l0aW9uPT09YGFmdGVyYmVnaW5gLGE9dC5wb3NpdGlvbj09PWBiZWZvcmVlbmRgfHx0LnBvc2l0aW9uPT09YGFmdGVyYmVnaW5gLG89bnx8dGhpcy5faXNFbGVtZW50RmFyRW5vdWdoRnJvbU90aGVyQWRFbGVtZW50cyhlLHIsaSkscz1hfHx0aGlzLl9pc0VsZW1lbnROb3RJblJvdyhlLGkpLGM9ZS5pZC5pbmRleE9mKGBBZFRocml2ZV8ke1AuQmVsb3dfUG9zdH1gKT09PS0xO3JldHVybiBvJiZzJiZjfV9pc0VsZW1lbnRGYXJFbm91Z2hGcm9tT3RoZXJBZEVsZW1lbnRzKGUsdCxuKXtsZXQgcj10aGlzLl9nZXRFbGVtZW50Q29vcmRzKGUsbiksW2ksYV09dGhpcy5fYWRJbmplY3Rpb25NYXAuZmluZE5laWdoYm9ySW5kaWNlcyhyKSxvPWk9PT1udWxsP3ZvaWQgMDp0aGlzLl9hZEluamVjdGlvbk1hcC5tYXBbaV0uY29vcmRzLHM9YT09PW51bGw/dm9pZCAwOnRoaXMuX2FkSW5qZWN0aW9uTWFwLm1hcFthXS5jb29yZHM7cmV0dXJuKG89PT12b2lkIDB8fHItdD5vKSYmKHM9PT12b2lkIDB8fHIrdDxzKX1faXNFbGVtZW50Tm90SW5Sb3coZSx0KXtsZXQgbj1lLnByZXZpb3VzRWxlbWVudFNpYmxpbmcscj1lLm5leHRFbGVtZW50U2libGluZyxpPXQ/IW4mJnJ8fG4mJmUudGFnTmFtZSE9PW4udGFnTmFtZT9yOm46cjtpZighaSlyZXR1cm4hMDtsZXQgYT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKGEuaGVpZ2h0PT09MClyZXR1cm4hMDtsZXQgbz1pLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBhLnRvcCE9PW8udG9wfV9jYWxjdWxhdGVNYWluQ29udGVudEhlaWdodEFuZEFsbEVsZW1lbnRzKGUsdD1kb2N1bWVudCl7bGV0W24scl09Z3QoZSx0aGlzLl9hZEluamVjdGlvbk1hcCx0KTtpZighbil0aHJvdyBFcnJvcihgTm8gbWFpbiBjb250ZW50IGVsZW1lbnQgZm91bmRgKTt0aGlzLl9tYWluQ29udGVudERpdj1uLHRoaXMuX3RvdGFsQXZhaWxhYmxlRWxlbWVudHM9cix0aGlzLl9tYWluQ29udGVudEhlaWdodD1fdCh0aGlzLl9tYWluQ29udGVudERpdil9X2NhcHR1cmVQcmVTbG90SW5zZXJ0aW9uTWFpbkNvbnRlbnRNZWFzdXJlbWVudCgpe3dpbmRvdy5hZHRocml2ZUNMUyYmKHdpbmRvdy5hZHRocml2ZUNMUy5wcmVTbG90SW5zZXJ0aW9uTWVhc3VyZW1lbnRzP3dpbmRvdy5hZHRocml2ZUNMUy5wcmVTbG90SW5zZXJ0aW9uTWVhc3VyZW1lbnRzLm1haW5Db250ZW50SGVpZ2h0PXRoaXMuX21haW5Db250ZW50SGVpZ2h0OndpbmRvdy5hZHRocml2ZUNMUy5wcmVTbG90SW5zZXJ0aW9uTWVhc3VyZW1lbnRzPXttYWluQ29udGVudEhlaWdodDp0aGlzLl9tYWluQ29udGVudEhlaWdodH0pfV9jYXB0dXJlUHJlU2xvdEluc2VydGlvblBhZ2VBcmVhTWVhc3VyZW1lbnQoKXtpZih3aW5kb3cuYWR0aHJpdmVDTFMpe2xldCBlPXZ0KCkqeXQoKTt3aW5kb3cuYWR0aHJpdmVDTFMucHJlU2xvdEluc2VydGlvbk1lYXN1cmVtZW50cz93aW5kb3cuYWR0aHJpdmVDTFMucHJlU2xvdEluc2VydGlvbk1lYXN1cmVtZW50cy50b3RhbFBhZ2VBcmVhPWU6d2luZG93LmFkdGhyaXZlQ0xTLnByZVNsb3RJbnNlcnRpb25NZWFzdXJlbWVudHM9e3RvdGFsUGFnZUFyZWE6ZX19fV9nZXRFbGVtZW50Q29vcmRzKGUsdD0hMSl7bGV0IG49ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtyZXR1cm4odD9uLnRvcDpuLmJvdHRvbSkrd2luZG93LnNjcm9sbFl9X2FkZENvbnRlbnRBZChlLHQsbj1kb2N1bWVudCl7dmFyIHI7bGV0IGk9bnVsbCxhPUcodCksbz1sdCh0KSxzPXRoaXMuX2Nsc09wdGlvbnMuc2l0ZUFkcy5hZE9wdGlvbnMuc3RpY2t5Q29udGFpbmVyQ29uZmlnLGM9cz09bnVsbHx8KHI9cy5jb250ZW50KT09bnVsbD92b2lkIDA6ci5lbmFibGVkLGw9Yz9gYWR0aHJpdmUtc3RpY2t5LWNvbnRhaW5lcmA6YGAsdT10aGlzLmFkZEFkKGUsdGhpcy5nZXREeW5hbWljRWxlbWVudElkKHQpLHQucG9zaXRpb24sW2wsYSxvLC4uLnQuY2xhc3NOYW1lc10pO2lmKHUpe2xldCBlPWF0KHQsdSk7aWYoZS5sZW5ndGgpe3ZhciBkOyghY3x8ISghKHM9PW51bGx8fChkPXMuY29udGVudCk9PW51bGwpJiZkLm1pbkhlaWdodCkpJiYodS5zdHlsZS5taW5IZWlnaHQ9dGhpcy5sb2NhdGlvblRvTWluSGVpZ2h0W3QubG9jYXRpb25dKSxpPXtjbHNEeW5hbWljQWQ6dCxkeW5hbWljQWQ6dCxlbGVtZW50OnUsc2l6ZXM6ZSxuYW1lOmAke3QubG9jYXRpb259XyR7dC5zZXF1ZW5jZX1gLGluZmluaXRlOm4hPT1kb2N1bWVudH19fXJldHVybiBpfWdldER5bmFtaWNFbGVtZW50SWQoZSl7cmV0dXJuYEFkVGhyaXZlXyR7ZS5sb2NhdGlvbn1fJHtlLnNlcXVlbmNlfV8ke3RoaXMuX2RldmljZX1gfWdldEVsZW1lbnRzKGUsdD1kb2N1bWVudCl7cmV0dXJuIHQucXVlcnlTZWxlY3RvckFsbChlKX1hZGRBZChlLHQsbixyPVtdKXtpZighZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCkpe2xldCBpPWA8ZGl2IGlkPSIke3R9IiBjbGFzcz0iYWR0aHJpdmUtYWQgJHtyLmpvaW4oYCBgKX0iPjwvZGl2PmA7ZS5pbnNlcnRBZGphY2VudEhUTUwobixpKX1yZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodCl9X3JlcGVhdER5bmFtaWNBZHMoZSl7bGV0IHQ9W10sbj1lLmxvY2F0aW9uPT09UC5SZWNpcGU/OTk6dGhpcy5sb2NhdGlvbk1heExhenlTZXF1ZW5jZS5nZXQoZS5sb2NhdGlvbikscj1lLmxhenk/VihuLDApOjAsaT1lLm1heCxhPWUubGF6eU1heCxvPXI9PT0wJiZlLmxhenk/aSthOk1hdGgubWluKE1hdGgubWF4KHItZS5zZXF1ZW5jZSsxLDApLGkrYSkscz1NYXRoLm1heChpLG8pO2ZvcihsZXQgbj0wO248cztuKyspe2xldCByPU51bWJlcihlLnNlcXVlbmNlKStuLGE9ZS5sYXp5JiZuPj1pLG89cjtlLm5hbWU9PT1gUmVjaXBlXzFgJiZyPj01JiYobz1yKzEpLHQucHVzaChLKEsoe30sZSkse30se3NlcXVlbmNlOm8sbGF6eTphfSkpfXJldHVybiB0fV9sb2NhdGlvbkVuYWJsZWQoZSl7bGV0IHQ9dGhpcy5fY2xzT3B0aW9ucy5lbmFibGVkTG9jYXRpb25zLmluY2x1ZGVzKGUubG9jYXRpb24pLG49dGhpcy5fY2xzT3B0aW9ucy5kaXNhYmxlQWRzJiZ0aGlzLl9jbHNPcHRpb25zLmRpc2FibGVBZHMuYWxsfHxkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhgYWR0aHJpdmUtZGlzYWJsZS1hbGxgKSxyPSFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucyhgYWR0aHJpdmUtZGlzYWJsZS1jb250ZW50YCkmJiF0aGlzLl9jbHNPcHRpb25zLmRpc2FibGVBZHMucmVhc29ucy5oYXMoYGNvbnRlbnRfcGx1Z2luYCk7cmV0dXJuIHQmJiFuJiZyfX0sbm49Y2xhc3N7Y29uc3RydWN0b3IoKXtJKHRoaXMsYF9tYXBgLFtdKX1hZGQoZSx0LG4scj1kb2N1bWVudCl7dGhpcy5fbWFwLnB1c2goe2VsOmUsY29vcmRzOnQsZHluYW1pY0FkOm4sdGFyZ2V0OnJ9KX1hZGRTb3J0ZWQoZSx0LG4scj1kb2N1bWVudCl7bGV0IGk9dGhpcy5fdXBwZXJCb3VuZEluZGV4KHQpO3RoaXMuX21hcC5zcGxpY2UoaSwwLHtlbDplLGNvb3Jkczp0LGR5bmFtaWNBZDpuLHRhcmdldDpyfSl9Z2V0IG1hcCgpe3JldHVybiB0aGlzLl9tYXB9c29ydCgpe3RoaXMuX21hcC5zb3J0KCh7Y29vcmRzOmV9LHtjb29yZHM6dH0pPT5lLXQpfWZpbHRlclVzZWQoKXt0aGlzLl9tYXA9dGhpcy5fbWFwLmZpbHRlcigoe2R5bmFtaWNBZDplfSk9PiFlLnVzZWQpfWZpbmROZWlnaGJvckluZGljZXMoZSl7bGV0IHQ9dGhpcy5fdXBwZXJCb3VuZEluZGV4KGUpO3JldHVyblt0LTE+PTA/dC0xOm51bGwsdDx0aGlzLl9tYXAubGVuZ3RoP3Q6bnVsbF19X3VwcGVyQm91bmRJbmRleChlKXtsZXQgdD0wLG49dGhpcy5fbWFwLmxlbmd0aDtmb3IoO3Q8bjspe2xldCByPXQrbj4+PjE7dGhpcy5fbWFwW3JdLmNvb3Jkczw9ZT90PXIrMTpuPXJ9cmV0dXJuIHR9cmVzZXQoKXt0aGlzLl9tYXA9W119fSxybj1jbGFzcyBleHRlbmRzIG5ue307bGV0IGFuPUwoKGU9bmF2aWdhdG9yLnVzZXJBZ2VudCk9Pi8oV2luZG93cyBOVHxNYWNpbnRvc2h8WDExO1teKV0qKExpbnV4fENyT1MpKS9pLnRlc3QoZSkpLG9uPSgpPT57bGV0IGU9UigpP2Btb2JpbGVgOmB0YWJsZXRgO3JldHVybiBhbihIKT9gZGVza3RvcGA6ZX0sc249ZT0+e2xldCB0PUdlKCksbj1vbigpLHI9ZS5zaXRlQWRzUHJvZmlsZXMsaT1udWxsO2lmKHImJnIubGVuZ3RoKWZvcihsZXQgZSBvZiByKXtsZXQgcj1lLnRhcmdldGluZy5kZXZpY2UsYT1lLnRhcmdldGluZy5icm93c2VyRW5naW5lLG89ciYmci5sZW5ndGgmJnIuaW5jbHVkZXMobikscz1hJiZhLmxlbmd0aCYmYS5pbmNsdWRlcyh0KTtvJiZzJiYoaT1lKX1yZXR1cm4gaX0sY249ZT0+e2xldCB0PXNuKGUpO2lmKHQpe2xldCBlPXQucHJvZmlsZUlkO2RvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZChgcmFwdGl2ZS1wcm9maWxlLSR7ZX1gKX19LFE9e1ZpZGVvX0NvbGxhcHNlX0F1dG9wbGF5X1NvdW5kT2ZmOmBWaWRlb19Db2xsYXBzZV9BdXRvcGxheV9Tb3VuZE9mZmAsVmlkZW9fSW5kaXZpZHVhbF9BdXRvcGxheV9TT2ZmOmBWaWRlb19JbmRpdmlkdWFsX0F1dG9wbGF5X1NPZmZgLFZpZGVvX0NvbGxfU09mZl9TbWFydHBob25lOmBWaWRlb19Db2xsX1NPZmZfU21hcnRwaG9uZWAsVmlkZW9fSW5fUG9zdF9DbGlja3RvUGxheV9Tb3VuZE9uOmBWaWRlb19Jbi1Qb3N0X0NsaWNrdG9QbGF5X1NvdW5kT25gLFZpZGVvX0NvbGxhcHNlX0F1dG9wbGF5X1NvdW5kT2ZmXzE1czpgVmlkZW9fQ29sbGFwc2VfQXV0b3BsYXlfU291bmRPZmZfMTVzYCxWaWRlb19JbmRpdmlkdWFsX0F1dG9wbGF5X1NPZmZfMTVzOmBWaWRlb19JbmRpdmlkdWFsX0F1dG9wbGF5X1NPZmZfMTVzYCxWaWRlb19Db2xsX1NPZmZfU21hcnRwaG9uZV8xNXM6YFZpZGVvX0NvbGxfU09mZl9TbWFydHBob25lXzE1c2AsVmlkZW9fSW5fUG9zdF9DbGlja3RvUGxheV9Tb3VuZE9uXzE1czpgVmlkZW9fSW4tUG9zdF9DbGlja3RvUGxheV9Tb3VuZE9uXzE1c2B9O3ZhciBsbj1jbGFzc3tnZXQgZW5hYmxlZCgpe3JldHVybiEwfX07ZnVuY3Rpb24gdW4oZSx0KXtpZihlPT1udWxsKXJldHVybnt9O3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKWlmKHt9Lmhhc093blByb3BlcnR5LmNhbGwoZSxyKSl7aWYodC5pbmNsdWRlcyhyKSljb250aW51ZTtuW3JdPWVbcl19cmV0dXJuIG59ZnVuY3Rpb24gJChlLHQpe2lmKGU9PW51bGwpcmV0dXJue307dmFyIG4scixpPXVuKGUsdCk7aWYoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyl7dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtmb3Iocj0wO3I8YS5sZW5ndGg7cisrKW49YVtyXSx0LmluY2x1ZGVzKG4pfHx7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsbikmJihpW25dPWVbbl0pfXJldHVybiBpfWxldCBkbj1bYHZhbGlkYCxgZWxlbWVudHNgXSxmbj1bYHZhbGlkYCxgZWxlbWVudHNgXTt2YXIgcG49Y2xhc3MgZXh0ZW5kcyBsbntjb25zdHJ1Y3RvcihlLHQsbil7c3VwZXIoKSx0aGlzLl92aWRlb0NvbmZpZz1lLHRoaXMuX2NvbXBvbmVudD10LHRoaXMuX2NvbnRleHQ9bixJKHRoaXMsYF9wb3RlbnRpYWxQbGF5ZXJNYXBgLHZvaWQgMCksSSh0aGlzLGBfZGV2aWNlYCx2b2lkIDApLEkodGhpcyxgX3N0aWNreVJlbGF0ZWRPblBhZ2VgLCExKSxJKHRoaXMsYF9yZWxhdGVkTWVkaWFJZHNgLFtdKSx0aGlzLl9kZXZpY2U9YW4oKT9gZGVza3RvcGA6YG1vYmlsZWAsdGhpcy5fcG90ZW50aWFsUGxheWVyTWFwPXRoaXMuc2V0UG90ZW50aWFsUGxheWVyc01hcCgpfXNldFBvdGVudGlhbFBsYXllcnNNYXAoKXtsZXQgZT10aGlzLl92aWRlb0NvbmZpZy5wbGF5ZXJzfHxbXSx0PXRoaXMuX2ZpbHRlclBsYXllck1hcCgpO3JldHVybiB0LnN0YXRpb25hcnlSZWxhdGVkPWUuZmlsdGVyKGU9PmUudHlwZT09PWBzdGF0aW9uYXJ5UmVsYXRlZGAmJmUuZW5hYmxlZCksdGhpcy5fcG90ZW50aWFsUGxheWVyTWFwPXQsdGhpcy5fcG90ZW50aWFsUGxheWVyTWFwfV9maWx0ZXJQbGF5ZXJNYXAoKXtsZXQgZT10aGlzLl92aWRlb0NvbmZpZy5wbGF5ZXJzLHQ9e3N0aWNreVJlbGF0ZWQ6W10sc3RpY2t5UGxheWxpc3Q6W10sc3RhdGlvbmFyeVJlbGF0ZWQ6W119O3JldHVybiBlJiZlLmxlbmd0aD9lLmZpbHRlcihlPT57dmFyIHQ7cmV0dXJuKHQ9ZS5kZXZpY2VzKT09bnVsbD92b2lkIDA6dC5pbmNsdWRlcyh0aGlzLl9kZXZpY2UpfSkucmVkdWNlKChlLHQpPT4oZVt0LnR5cGVdfHwoVS5ldmVudCh0aGlzLl9jb21wb25lbnQsYGNvbnN0cnVjdG9yYCxgVW5rbm93biBWaWRlbyBQbGF5ZXIgVHlwZSBkZXRlY3RlZGAsdC50eXBlKSxlW3QudHlwZV09W10pLHQuZW5hYmxlZCYmZVt0LnR5cGVdLnB1c2godCksZSksdCk6dH1fY2hlY2tQbGF5ZXJTZWxlY3Rvck9uUGFnZShlKXtmb3IobGV0IHQgb2YgdGhpcy5fcG90ZW50aWFsUGxheWVyTWFwW2VdKXtsZXQgZT10aGlzLl9nZXRQbGFjZW1lbnRFbGVtZW50KHQpO2lmKGUpcmV0dXJue3BsYXllcjp0LHBsYXllckVsZW1lbnQ6ZX19cmV0dXJue3BsYXllcjpudWxsLHBsYXllckVsZW1lbnQ6bnVsbH19X2dldE92ZXJyaWRlRWxlbWVudChlLHQsbil7aWYoZSYmdCl7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YCk7dC5pbnNlcnRBZGphY2VudEVsZW1lbnQoZS5wb3NpdGlvbixyKSxuPXJ9ZWxzZXtsZXR7cGxheWVyOmUscGxheWVyRWxlbWVudDp0fT10aGlzLl9jaGVja1BsYXllclNlbGVjdG9yT25QYWdlKGBzdGlja3lQbGF5bGlzdGApO2lmKGUmJnQpe2xldCByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYGRpdmApO3QuaW5zZXJ0QWRqYWNlbnRFbGVtZW50KGUucG9zaXRpb24sciksbj1yfX1yZXR1cm4gbn1fc2hvdWxkT3ZlcnJpZGVFbGVtZW50KGUpe2xldCB0PWUuZ2V0QXR0cmlidXRlKGBvdmVycmlkZS1lbWJlZGApO3JldHVybiB0PT09YHRydWVgfHx0PT09YGZhbHNlYD90PT09YHRydWVgOnRoaXMuX3ZpZGVvQ29uZmlnLnJlbGF0ZWRTZXR0aW5ncz90aGlzLl92aWRlb0NvbmZpZy5yZWxhdGVkU2V0dGluZ3Mub3ZlcnJpZGVFbWJlZExvY2F0aW9uOiExfV9jaGVja1BhZ2VTZWxlY3RvcihlLHQsbj1bXSl7cmV0dXJuIGUmJnQmJm4ubGVuZ3RoPT09MD8od2luZG93LmxvY2F0aW9uLnBhdGhuYW1lIT09YC9gJiZVLmV2ZW50KGBWaWRlb1V0aWxzYCxgZ2V0UGxhY2VtZW50RWxlbWVudGAsRXJyb3IoYFBTTkY6ICR7ZX0gZG9lcyBub3QgZXhpc3Qgb24gdGhlIHBhZ2VgKSksITEpOiEwfV9nZXRFbGVtZW50U2VsZWN0b3IoZSx0LG4pe3JldHVybiB0JiZ0Lmxlbmd0aD5uP3Rbbl06KFUuZXZlbnQoYFZpZGVvVXRpbHNgLGBnZXRQbGFjZW1lbnRFbGVtZW50YCxFcnJvcihgRVNORjogJHtlfSBkb2VzIG5vdCBleGlzdCBvbiB0aGUgcGFnZWApKSxudWxsKX1fZ2V0UGxhY2VtZW50RWxlbWVudChlKXtsZXR7cGFnZVNlbGVjdG9yOnQsZWxlbWVudFNlbGVjdG9yOm4sc2tpcDpyfT1lLGk9a3QodCkse3ZhbGlkOmEsZWxlbWVudHM6b309aSxzPSQoaSxkbiksYz1PdChuKSx7dmFsaWQ6bCxlbGVtZW50czp1fT1jLGQ9JChjLGZuKTtyZXR1cm4gdCE9PWBgJiYhYT8oVS5lcnJvcihgVmlkZW9VdGlsc2AsYGdldFBsYWNlbWVudEVsZW1lbnRgLEVycm9yKGAke3R9IGlzIG5vdCBhIHZhbGlkIHNlbGVjdG9yYCkscyksbnVsbCk6bD90aGlzLl9jaGVja1BhZ2VTZWxlY3Rvcih0LGEsbykmJnRoaXMuX2dldEVsZW1lbnRTZWxlY3RvcihuLHUscil8fG51bGw6KFUuZXJyb3IoYFZpZGVvVXRpbHNgLGBnZXRQbGFjZW1lbnRFbGVtZW50YCxFcnJvcihgJHtufSBpcyBub3QgYSB2YWxpZCBzZWxlY3RvcmApLGQpLG51bGwpfV9nZXRFbWJlZGRlZFBsYXllclR5cGUoZSl7bGV0IHQ9ZS5nZXRBdHRyaWJ1dGUoYGRhdGEtcGxheWVyLXR5cGVgKTtyZXR1cm4oIXR8fHQ9PT1gZGVmYXVsdGApJiYodD10aGlzLl92aWRlb0NvbmZpZy5yZWxhdGVkU2V0dGluZ3M/dGhpcy5fdmlkZW9Db25maWcucmVsYXRlZFNldHRpbmdzLmRlZmF1bHRQbGF5ZXJUeXBlOmBzdGF0aWNgKSx0aGlzLl9zdGlja3lSZWxhdGVkT25QYWdlJiYodD1gc3RhdGljYCksdH1fZ2V0TWVkaWFJZChlKXtsZXQgdD1lLmdldEF0dHJpYnV0ZShgZGF0YS12aWRlby1pZGApO3JldHVybiB0Pyh0aGlzLl9yZWxhdGVkTWVkaWFJZHMucHVzaCh0KSx0KTohMX1fY3JlYXRlUmVsYXRlZFBsYXllcihlLHQsbixyKXt0PT09YGNvbGxhcHNlYD90aGlzLl9jcmVhdGVDb2xsYXBzZVBsYXllcihlLG4pOnQ9PT1gc3RhdGljYCYmdGhpcy5fY3JlYXRlU3RhdGljUGxheWVyKGUsbixyKX1fY3JlYXRlQ29sbGFwc2VQbGF5ZXIoZSx0KXtsZXR7cGxheWVyOm4scGxheWVyRWxlbWVudDpyfT10aGlzLl9jaGVja1BsYXllclNlbGVjdG9yT25QYWdlKGBzdGlja3lSZWxhdGVkYCksaT1ufHx0aGlzLl9wb3RlbnRpYWxQbGF5ZXJNYXAuc3RhdGlvbmFyeVJlbGF0ZWRbMF07aSYmaS5wbGF5ZXJJZD8odGhpcy5fc2hvdWxkT3ZlcnJpZGVFbGVtZW50KHQpJiYodD10aGlzLl9nZXRPdmVycmlkZUVsZW1lbnQobixyLHQpKSx0PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYCNjbHMtdmlkZW8tY29udGFpbmVyLSR7ZX0gPiBkaXZgKXx8dCx0aGlzLl9jcmVhdGVTdGlja3lSZWxhdGVkUGxheWVyKEsoSyh7fSxpKSx7fSx7bWVkaWFJZDplfSksdCkpOlUuZXJyb3IodGhpcy5fY29tcG9uZW50LGBfY3JlYXRlQ29sbGFwc2VQbGF5ZXJgLGBObyB2aWRlbyBwbGF5ZXIgZm91bmRgKX1fY3JlYXRlU3RhdGljUGxheWVyKGUsdCxuKXtpZih0aGlzLl9wb3RlbnRpYWxQbGF5ZXJNYXAuc3RhdGlvbmFyeVJlbGF0ZWQubGVuZ3RoJiZ0aGlzLl9wb3RlbnRpYWxQbGF5ZXJNYXAuc3RhdGlvbmFyeVJlbGF0ZWRbMF0ucGxheWVySWQpe2xldCByPXRoaXMuX3BvdGVudGlhbFBsYXllck1hcC5zdGF0aW9uYXJ5UmVsYXRlZFswXTt0aGlzLl9jcmVhdGVTdGF0aW9uYXJ5UmVsYXRlZFBsYXllcihLKEsoe30scikse30se21lZGlhT3JQbGF5bGlzdElkOmV9KSx0LG4pfWVsc2UgVS5lcnJvcih0aGlzLl9jb21wb25lbnQsYF9jcmVhdGVTdGF0aWNQbGF5ZXJgLGBObyB2aWRlbyBwbGF5ZXIgZm91bmRgKX1fc2hvdWxkUnVuQXV0b3BsYXlQbGF5ZXJzKCl7cmV0dXJuISEodGhpcy5faXNWaWRlb0FsbG93ZWRPblBhZ2UoKSYmKHRoaXMuX3BvdGVudGlhbFBsYXllck1hcC5zdGlja3lSZWxhdGVkLmxlbmd0aHx8dGhpcy5fcG90ZW50aWFsUGxheWVyTWFwLnN0aWNreVBsYXlsaXN0Lmxlbmd0aCkpfV9zZXRQbGF5bGlzdE1lZGlhSWRXaGVuU3RhdGlvbmFyeU9uUGFnZShlLHQpe2lmKHRoaXMuX3BvdGVudGlhbFBsYXllck1hcC5zdGF0aW9uYXJ5UmVsYXRlZC5sZW5ndGgmJnRoaXMuX3BvdGVudGlhbFBsYXllck1hcC5zdGF0aW9uYXJ5UmVsYXRlZFswXS5wbGF5ZXJJZCYmZSYmZS5sZW5ndGgpe2xldCBuPWVbMF0uZ2V0QXR0cmlidXRlKGBkYXRhLXZpZGVvLWlkYCk7cmV0dXJuIG4/SyhLKHt9LHQpLHt9LHttZWRpYUlkOm59KTp0fXJldHVybiB0fV9kZXRlcm1pbmVBdXRvcGxheVBsYXllcnMoZSl7bGV0IHQ9dGhpcy5fY29tcG9uZW50LG49dD09PWBWaWRlb01hbmFnZXJDb21wb25lbnRgLHI9dGhpcy5fY29udGV4dDtpZih0aGlzLl9zdGlja3lSZWxhdGVkT25QYWdlKXtVLmV2ZW50KHQsYHN0aWNreVJlbGF0ZWRPblBhZ2VgLG4mJntkZXZpY2U6ciYmci5kZXZpY2UsaXNEZXNrdG9wOnRoaXMuX2RldmljZX18fHt9KTtyZXR1cm59bGV0e3BsYXllckVsZW1lbnQ6aX09dGhpcy5fY2hlY2tQbGF5ZXJTZWxlY3Rvck9uUGFnZShgc3RpY2t5UGxheWxpc3RgKSx7cGxheWVyOmF9PXRoaXMuX2NoZWNrUGxheWVyU2VsZWN0b3JPblBhZ2UoYHN0aWNreVBsYXlsaXN0YCk7YSYmYS5wbGF5ZXJJZCYmaT8oYT10aGlzLl9zZXRQbGF5bGlzdE1lZGlhSWRXaGVuU3RhdGlvbmFyeU9uUGFnZShlLGEpLHRoaXMuX2NyZWF0ZVBsYXlsaXN0UGxheWVyKGEsaSkpOk1hdGgucmFuZG9tKCk8LjAxJiZzZXRUaW1lb3V0KCgpPT57VS5ldmVudCh0LGBub1N0aWNreVBsYXlsaXN0YCxuJiZ7dmVuZG9yOmBub25lYCxkZXZpY2U6ciYmci5kZXZpY2UsaXNEZXNrdG9wOnRoaXMuX2RldmljZX18fHt9KX0sMWUzKX1faW5pdGlhbGl6ZVJlbGF0ZWRQbGF5ZXJzKGUpe2xldCB0PW5ldyBNYXA7Zm9yKGxldCBuPTA7bjxlLmxlbmd0aDtuKyspe2xldCByPWVbbl0saT1yLm9mZnNldFBhcmVudCxhPXRoaXMuX2dldEVtYmVkZGVkUGxheWVyVHlwZShyKSxvPXRoaXMuX2dldE1lZGlhSWQocik7aWYoaSYmbyl7bGV0IGU9KHQuZ2V0KG8pfHwwKSsxO3Quc2V0KG8sZSksdGhpcy5fY3JlYXRlUmVsYXRlZFBsYXllcihvLGEscixlKX19fX0sbW49Y2xhc3MgZXh0ZW5kcyBwbntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKGUsYENsc1ZpZGVvSW5zZXJ0aW9uYCksdGhpcy5fdmlkZW9Db25maWc9ZSx0aGlzLl9jbHNPcHRpb25zPXQsSSh0aGlzLGBfSU5fUE9TVF9TRUxFQ1RPUmAsYC5hZHRocml2ZS12aWRlby1wbGF5ZXJgKSxJKHRoaXMsYF9XUkFQUEVSX0JBUl9IRUlHSFRgLDM2KSxJKHRoaXMsYF9wbGF5ZXJzQWRkZWRGcm9tUGx1Z2luYCxbXSksdC5yZW1vdmVWaWRlb1RpdGxlV3JhcHBlciYmKHRoaXMuX1dSQVBQRVJfQkFSX0hFSUdIVD0wKX1pbml0KCl7dGhpcy5faW5pdGlhbGl6ZVBsYXllcnMoKX1fd3JhcFZpZGVvUGxheWVyV2l0aENMUyhlLHQsbj0wKXtpZihlLnBhcmVudE5vZGUpe2xldCByPWUub2Zmc2V0V2lkdGgqKDkvMTYpLGk9dGhpcy5fY3JlYXRlR2VuZXJpY0NMU1dyYXBwZXIocix0LG4pO3JldHVybiBlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGksZSksaS5hcHBlbmRDaGlsZChlKSxpfXJldHVybiBudWxsfV9jcmVhdGVHZW5lcmljQ0xTV3JhcHBlcihlLHQsbil7bGV0IHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YCk7cmV0dXJuIHIuaWQ9YGNscy12aWRlby1jb250YWluZXItJHt0fWAsci5jbGFzc05hbWU9YGFkdGhyaXZlYCxyLnN0eWxlLm1pbkhlaWdodD1gJHtlK259cHhgLHJ9X2dldFRpdGxlSGVpZ2h0KCl7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgaDNgKTtlLnN0eWxlLm1hcmdpbj1gMTBweCAwYCxlLmlubmVyVGV4dD1gVGl0bGVgLGUuc3R5bGUudmlzaWJpbGl0eT1gaGlkZGVuYCxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO2xldCB0PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGUpLG49cGFyc2VJbnQodC5oZWlnaHQsMTApLHI9cGFyc2VJbnQodC5tYXJnaW5Ub3AsMTApLGk9cGFyc2VJbnQodC5tYXJnaW5Cb3R0b20sMTApO3JldHVybiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpLE1hdGgubWluKG4raStyLDUwKX1faW5pdGlhbGl6ZVBsYXllcnMoKXtsZXQgZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRoaXMuX0lOX1BPU1RfU0VMRUNUT1IpO2UubGVuZ3RoJiZ0aGlzLl9pbml0aWFsaXplUmVsYXRlZFBsYXllcnMoZSksdGhpcy5fc2hvdWxkUnVuQXV0b3BsYXlQbGF5ZXJzKCkmJnRoaXMuX2RldGVybWluZUF1dG9wbGF5UGxheWVycyhlKX1fY3JlYXRlU3RhdGlvbmFyeVJlbGF0ZWRQbGF5ZXIoZSx0LG4pe2xldCByPXRoaXMuX2RldmljZT09PWBtb2JpbGVgP1s0MDAsMjI1XTpbNjQwLDM2MF0saT1RLlZpZGVvX0luX1Bvc3RfQ2xpY2t0b1BsYXlfU291bmRPbjtpZih0JiZlLm1lZGlhT3JQbGF5bGlzdElkKXtsZXQgYT1gJHtlLm1lZGlhT3JQbGF5bGlzdElkfV8ke259YCxvPXRoaXMuX3dyYXBWaWRlb1BsYXllcldpdGhDTFModCxhKTt0aGlzLl9wbGF5ZXJzQWRkZWRGcm9tUGx1Z2luLnB1c2goZS5tZWRpYU9yUGxheWxpc3RJZCksbyYmdGhpcy5fY2xzT3B0aW9ucy5zZXRJbmplY3RlZFZpZGVvU2xvdHMoe3BsYXllcklkOmUucGxheWVySWQscGxheWVyTmFtZTppLHBsYXllclNpemU6cixlbGVtZW50Om8sdHlwZTpgc3RhdGlvbmFyeVJlbGF0ZWRgfSl9fV9jcmVhdGVTdGlja3lSZWxhdGVkUGxheWVyKGUsdCl7bGV0IG49dGhpcy5fZGV2aWNlPT09YG1vYmlsZWA/WzQwMCwyMjVdOls2NDAsMzYwXSxyPVEuVmlkZW9fSW5kaXZpZHVhbF9BdXRvcGxheV9TT2ZmO2lmKHRoaXMuX3N0aWNreVJlbGF0ZWRPblBhZ2U9ITAsdGhpcy5fdmlkZW9Db25maWcubW9iaWxlU3RpY2t5UGxheWVyT25QYWdlPXRoaXMuX2RldmljZT09PWBtb2JpbGVgLHRoaXMuX3ZpZGVvQ29uZmlnLmNvbGxhcHNpYmxlUGxheWVyT25QYWdlPSEwLHQmJmUucG9zaXRpb24mJmUubWVkaWFJZCl7bGV0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YCk7dC5pbnNlcnRBZGphY2VudEVsZW1lbnQoZS5wb3NpdGlvbixpKTtsZXQgYT10aGlzLl9nZXRUaXRsZUhlaWdodCgpLG89dGhpcy5fd3JhcFZpZGVvUGxheWVyV2l0aENMUyhpLGUubWVkaWFJZCx0aGlzLl9XUkFQUEVSX0JBUl9IRUlHSFQrYSk7dGhpcy5fcGxheWVyc0FkZGVkRnJvbVBsdWdpbi5wdXNoKGUubWVkaWFJZCksbyYmdGhpcy5fY2xzT3B0aW9ucy5zZXRJbmplY3RlZFZpZGVvU2xvdHMoe3BsYXlsaXN0SWQ6ZS5wbGF5bGlzdElkLHBsYXllcklkOmUucGxheWVySWQscGxheWVyU2l6ZTpuLHBsYXllck5hbWU6cixlbGVtZW50OmksdHlwZTpgc3RpY2t5UmVsYXRlZGB9KX19X2NyZWF0ZVBsYXlsaXN0UGxheWVyKGUsdCl7bGV0IG49ZS5wbGF5bGlzdElkLHI9dGhpcy5fZGV2aWNlPT09YG1vYmlsZWA/US5WaWRlb19Db2xsX1NPZmZfU21hcnRwaG9uZTpRLlZpZGVvX0NvbGxhcHNlX0F1dG9wbGF5X1NvdW5kT2ZmLGk9dGhpcy5fZGV2aWNlPT09YG1vYmlsZWA/WzQwMCwyMjVdOls2NDAsMzYwXTt0aGlzLl92aWRlb0NvbmZpZy5tb2JpbGVTdGlja3lQbGF5ZXJPblBhZ2U9ITAsdGhpcy5fdmlkZW9Db25maWcuY29sbGFwc2libGVQbGF5ZXJPblBhZ2U9ITA7bGV0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChgZGl2YCk7dC5pbnNlcnRBZGphY2VudEVsZW1lbnQoZS5wb3NpdGlvbixhKTtsZXQgbz10aGlzLl9XUkFQUEVSX0JBUl9IRUlHSFQ7ZS50aXRsZSYmKG8rPXRoaXMuX2dldFRpdGxlSGVpZ2h0KCkpO2xldCBzPXRoaXMuX3dyYXBWaWRlb1BsYXllcldpdGhDTFMoYSxuLG8pO3RoaXMuX3BsYXllcnNBZGRlZEZyb21QbHVnaW4ucHVzaChgcGxheWxpc3QtJHtufWApLHMmJnRoaXMuX2Nsc09wdGlvbnMuc2V0SW5qZWN0ZWRWaWRlb1Nsb3RzKHtwbGF5bGlzdElkOmUucGxheWxpc3RJZCxwbGF5ZXJJZDplLnBsYXllcklkLHBsYXllclNpemU6aSxwbGF5ZXJOYW1lOnIsZWxlbWVudDphLHR5cGU6YHN0aWNreVBsYXlsaXN0YH0pfV9pc1ZpZGVvQWxsb3dlZE9uUGFnZSgpe2xldCBlPXRoaXMuX2Nsc09wdGlvbnMuZGlzYWJsZUFkcztpZihlJiZlLnZpZGVvKXtsZXQgdD1gYDtlLnJlYXNvbnMuaGFzKGB2aWRlb190YWdgKT90PWB2aWRlbyB0YWdgOmUucmVhc29ucy5oYXMoYHZpZGVvX3BsdWdpbmApP3Q9YHZpZGVvIHBsdWdpbmA6ZS5yZWFzb25zLmhhcyhgdmlkZW9fcGFnZWApJiYodD1gY29tbWFuZCBxdWV1ZWApO2xldCBuPXQ/YENsc1ZpZGVvSW5zZXJ0aW9uTWlncmF0ZWRgOmBDbHNWaWRlb0luc2VydGlvbmA7cmV0dXJuIFUuZXJyb3IobixgaXNWaWRlb0FsbG93ZWRPblBhZ2VgLEVycm9yKGBEQlA6IERpc2FibGVkIGJ5IHB1Ymxpc2hlciB2aWEgJHt0fHxgb3RoZXJgfWApKSwhMX1yZXR1cm4hdGhpcy5fY2xzT3B0aW9ucy52aWRlb0Rpc2FibGVkRnJvbVBsdWdpbn19O3RyeXsoKCk9PntsZXQgZT1uZXcgQmU7IWV8fCFlLmVuYWJsZWR8fChlLnNpdGVBZHMmJmNuKGUuc2l0ZUFkcyksbmV3IHRuKGUsbmV3IHJuKS5zdGFydCgpLG5ldyBtbihuZXcgSGUoZSksZSkuaW5pdCgpKX0pKCl9Y2F0Y2goZSl7VS5lcnJvcihgQ0xTYCxgcGx1Z2luc2VydGlvbi1paWZlYCxlKSx3aW5kb3cuYWR0aHJpdmVDTFMmJih3aW5kb3cuYWR0aHJpdmVDTFMuaW5qZWN0ZWRGcm9tUGx1Z2luPSExKX19KSgpOw=="></script><script data-no-optimize="1" data-cfasync="false" data-type="lazy" data-src="data:text/javascript;base64,KGZ1bmN0aW9uICgpIHt2YXIgY2xzRWxlbWVudHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJzY3JpcHRbaWRePSdjbHMtJ10iKTsgd2luZG93LmFkdGhyaXZlQ0xTICYmIGNsc0VsZW1lbnRzICYmIGNsc0VsZW1lbnRzLmxlbmd0aCA9PT0gMCA/IHdpbmRvdy5hZHRocml2ZUNMUy5pbmplY3RlZEZyb21QbHVnaW4gPSBmYWxzZSA6ICIiOyB9KSgpOw=="></script><script type="speculationrules">{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/savingadvice20/*","/wp-content/themes/genesis/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <script>jQuery(document).ready(function() {

			// Get all thumbs containers
			jQuery( ".thumbs-rating-container" ).each(function( index ) {

			 	// Get data attribute
			 	 var content_id = jQuery(this).data('content-id');

			 	 var itemName = "thumbsrating"+content_id;

			 	      // Check if this content has localstorage
			 	 	if (localStorage.getItem(itemName)){

						// Check if it's Up or Down vote
						if ( localStorage.getItem("thumbsrating" + content_id + "-1") ){
							jQuery(this).find('.thumbs-rating-up').addClass('thumbs-rating-voted');
						}
						if ( localStorage.getItem("thumbsrating" + content_id + "-0") ){
							jQuery(this).find('.thumbs-rating-down').addClass('thumbs-rating-voted');
						}
					}
			});
		});</script> <noscript><style>.lazyload{display:none;}</style></noscript><script data-noptimize="1">window.lazySizesConfig=window.lazySizesConfig||{};window.lazySizesConfig.loadMode=1;</script><script async data-noptimize="1" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/autoptimize/classes/external/js/lazysizes.min.js?ao_version=3.1.14"></script><script type="text/javascript" id="flying-scripts">const loadScriptsTimer=setTimeout(loadScripts,10*1000);const userInteractionEvents=['click', 'mousemove', 'keydown', 'touchstart', 'touchmove', 'wheel'];userInteractionEvents.forEach(function(event){window.addEventListener(event,triggerScriptLoader,{passive:!0})});function triggerScriptLoader(){loadScripts();clearTimeout(loadScriptsTimer);userInteractionEvents.forEach(function(event){window.removeEventListener(event,triggerScriptLoader,{passive:!0})})}
function loadScripts(){document.querySelectorAll("script[data-type='lazy']").forEach(function(elem){elem.setAttribute("src",elem.getAttribute("data-src"))})}</script> <script type="text/javascript">var visualizerUserInteractionEvents = [
				"scroll",
				"mouseover",
				"keydown",
				"touchmove",
				"touchstart"
			];

			visualizerUserInteractionEvents.forEach(function(event) {
				window.addEventListener(event, visualizerTriggerScriptLoader, { passive: true });
			});

			function visualizerTriggerScriptLoader() {
				visualizerLoadScripts();
				visualizerUserInteractionEvents.forEach(function(event) {
					window.removeEventListener(event, visualizerTriggerScriptLoader, { passive: true });
				});
			}

			function visualizerLoadScripts() {
				document.querySelectorAll("script[data-visualizer-script]").forEach(function(elem) {
					jQuery.getScript( elem.getAttribute("data-visualizer-script") )
					.done( function( script, textStatus ) {
						elem.setAttribute("src", elem.getAttribute("data-visualizer-script"));
						elem.removeAttribute("data-visualizer-script");
						setTimeout( function() {
							visualizerRefreshChart();
						} );
					} );
				});
			}

			function visualizerRefreshChart() {
				jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize();
				if ( jQuery( 'div.viz-facade-loaded:not(.visualizer-lazy):empty' ).length > 0 ) {
					visualizerUserInteractionEvents.forEach( function( event ) {
						window.addEventListener( event, function() {
							jQuery( '.visualizer-front:not(.visualizer-chart-loaded)' ).resize();
						}, { passive: true } );
					} );
				}
			}</script> <script type="text/javascript" id="widget-logic_live_match_widget-js" data-type="lazy" data-src="https://widgetlogic.org/v2/js/data.js?t=1771243200&amp;ver=6.0.0"></script> <script type="text/javascript" id="wp-postratings-js-extra">var ratingsL10n = {"plugin_url":"https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-postratings","ajax_url":"https://www.savingadvice.com/wp-admin/admin-ajax.php","text_wait":"Please rate only 1 item at a time.","image":"stars","image_ext":"gif","max":"5","show_loading":"1","show_fading":"1","custom":"0"};
var ratings_mouseover_image=new Image();ratings_mouseover_image.src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-postratings/images/stars/rating_over.gif";;
//# sourceURL=wp-postratings-js-extra</script> <script type="text/javascript" id="wp-postratings-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_830dae7fb9dfd5ac1879a83dd028083d.js?ver=1.91.2"></script> <script type="text/javascript" id="skip-links-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/themes/genesis/lib/js/skip-links.min.js?ver=3.6.1"></script> <script type="text/javascript" id="genesis-sample-responsive-menu-js-extra">var genesis_responsive_menu = {"mainMenu":"Menu","menuIconClass":"dashicons-before dashicons-menu","subMenu":"Submenu","subMenuIconsClass":"dashicons-before dashicons-arrow-down-alt2","menuClasses":{"combine":[".nav-primary",".nav-header"],"others":[]}};
//# sourceURL=genesis-sample-responsive-menu-js-extra</script> <script type="text/javascript" id="genesis-sample-responsive-menu-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/themes/savingadvice20/js/responsive-menus.min.js?ver=2.0"></script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-views/vendor/toolset/toolset-common/res/lib/bootstrap3/js/bootstrap.min.js?ver=3.3.7" id="toolset_bootstrap-js"></script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-review-pro/public/js/js.cookie.min.js?ver=2.1.4" id="js-cookie-js"></script> <script type="text/javascript" id="wp_review-jquery-appear-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_0b04cb7b853664de647c1cc6b50be1c2.js?ver=1.1"></script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-includes/js/underscore.min.js?ver=1.13.7" id="underscore-js"></script> <script type="text/javascript" id="wp-util-js-extra">var _wpUtilSettings = {"ajax":{"url":"/wp-admin/admin-ajax.php"}};
//# sourceURL=wp-util-js-extra</script> <script type="text/javascript" src="https://etyb2wffn3d.exactdn.com/wp-includes/js/wp-util.min.js?ver=6.9.1" id="wp-util-js"></script> <script type="text/javascript" id="wp_review-js-js-extra">var wpreview = {"ajaxurl":"https://www.savingadvice.com/wp-admin/admin-ajax.php","popup":{"enable":"0","width":"800px","animation_in":"bounceIn","animation_out":"bounceOut","overlay_color":"#0b0b0b","overlay_opacity":"0.8","post_type":"post","queryby":"category","orderby":"random","category":"0","tag":"0","review_type":"star","limit":"6","expiration":"30","cookie_name":"wpr-popup","delay":"0","show_on_load":false,"show_on_reach_bottom":false,"exit_intent":true,"screen_size_check":false,"screen_width":"0","embed_show_title":"","embed_show_thumbnail":"","embed_show_excerpt":"","embed_show_rating_box":"","embed_show_credit":""},"rateAllFeatures":"Please rate all features","verifiedPurchase":"(Verified purchase)","commentImageUploadNonce":"4a980d4729"};
//# sourceURL=wp_review-js-js-extra</script> <script type="text/javascript" id="wp_review-js-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/cache/autoptimize/js/autoptimize_single_6c2009a94fc669d9d94bbab1cbf9f6c6.js?ver=3.4.11"></script> <script type="text/javascript" id="jquery-knob-js" data-type="lazy" data-src="https://etyb2wffn3d.exactdn.com/wp-content/plugins/wp-review-pro/public/js/jquery.knob.min.js?ver=1.1"></script> <script type="text/javascript">jQuery('.soliloquy-container').removeClass('no-js');</script> <script data-type="lazy" data-src="data:text/javascript;base64,IWZ1bmN0aW9uKGUpe2NvbnN0IHI9eyJFdXJvcGUvQnJ1c3NlbHMiOiJnZHByIiwiRXVyb3BlL1NvZmlhIjoiZ2RwciIsIkV1cm9wZS9QcmFndWUiOiJnZHByIiwiRXVyb3BlL0NvcGVuaGFnZW4iOiJnZHByIiwiRXVyb3BlL0JlcmxpbiI6ImdkcHIiLCJFdXJvcGUvVGFsbGlubiI6ImdkcHIiLCJFdXJvcGUvRHVibGluIjoiZ2RwciIsIkV1cm9wZS9BdGhlbnMiOiJnZHByIiwiRXVyb3BlL01hZHJpZCI6ImdkcHIiLCJBZnJpY2EvQ2V1dGEiOiJnZHByIiwiRXVyb3BlL1BhcmlzIjoiZ2RwciIsIkV1cm9wZS9aYWdyZWIiOiJnZHByIiwiRXVyb3BlL1JvbWUiOiJnZHByIiwiQXNpYS9OaWNvc2lhIjoiZ2RwciIsIkV1cm9wZS9OaWNvc2lhIjoiZ2RwciIsIkV1cm9wZS9SaWdhIjoiZ2RwciIsIkV1cm9wZS9WaWxuaXVzIjoiZ2RwciIsIkV1cm9wZS9MdXhlbWJvdXJnIjoiZ2RwciIsIkV1cm9wZS9CdWRhcGVzdCI6ImdkcHIiLCJFdXJvcGUvTWFsdGEiOiJnZHByIiwiRXVyb3BlL0Ftc3RlcmRhbSI6ImdkcHIiLCJFdXJvcGUvVmllbm5hIjoiZ2RwciIsIkV1cm9wZS9XYXJzYXciOiJnZHByIiwiRXVyb3BlL0xpc2JvbiI6ImdkcHIiLCJBdGxhbnRpYy9NYWRlaXJhIjoiZ2RwciIsIkV1cm9wZS9CdWNoYXJlc3QiOiJnZHByIiwiRXVyb3BlL0xqdWJsamFuYSI6ImdkcHIiLCJFdXJvcGUvQnJhdGlzbGF2YSI6ImdkcHIiLCJFdXJvcGUvSGVsc2lua2kiOiJnZHByIiwiRXVyb3BlL1N0b2NraG9sbSI6ImdkcHIiLCJFdXJvcGUvTG9uZG9uIjoiZ2RwciIsIkV1cm9wZS9WYWR1eiI6ImdkcHIiLCJBdGxhbnRpYy9SZXlramF2aWsiOiJnZHByIiwiRXVyb3BlL09zbG8iOiJnZHByIiwiRXVyb3BlL0lzdGFuYnVsIjoiZ2RwciIsIkV1cm9wZS9adXJpY2giOiJnZHByIn0scD0oKCk9Pntjb25zdCBlPUludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZTtyZXR1cm4gcltlXXx8bnVsbH0pKCk7aWYobnVsbD09PXB8fCJnZHByIiE9PXApe2NvbnN0IHI9Il9fYWRibG9ja2VyIjtpZigtMT09PWUuY29va2llLmluZGV4T2Yocikpe2NvbnN0IHA9bmV3IFhNTEh0dHBSZXF1ZXN0O3Aub3BlbigiR0VUIiwiaHR0cHM6Ly9hZHMuYWR0aHJpdmUuY29tL2FiZC9hYmQuanMiLCEwKSxwLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKFhNTEh0dHBSZXF1ZXN0LkRPTkU9PT1wLnJlYWR5U3RhdGUpaWYoMjAwPT09cC5zdGF0dXMpe2NvbnN0IHI9ZS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTtyLmlubmVySFRNTD1wLnJlc3BvbnNlVGV4dCxlLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uYXBwZW5kQ2hpbGQocil9ZWxzZXtjb25zdCBwPW5ldyBEYXRlO3Auc2V0VGltZShwLmdldFRpbWUoKSszZTUpLGUuY29va2llPXIrIj10cnVlOyBleHBpcmVzPSIrcC50b1VUQ1N0cmluZygpKyI7IHBhdGg9LyJ9fSxwLnNlbmQoKX19fShkb2N1bWVudCk7"></script><script>!function(){function e(){var e=document.cookie.match("(^|[^;]+)\\s*__adblocker\\s*=\\s*([^;]+)");return e&&e.pop()}function t(){var e=document.createElement("script");e.async=!0,e.id="Tqgkgu",e.setAttribute("data-sdk","l/1.1.15"),e.setAttribute("data-cfasync","false"),e.src="https://html-load.com/loader.min.js",e.charset="UTF-8",e.setAttribute("data","kfpvgbrkab9r4a5rkrqrkwagrw6rzrv8rxag0asrka5abaoagrxa5srxrxabasrkrvabaoaxrx0asrkabrxfaba1raa5a5asrkr9wa1agrw6rzr9rkaia8"),e.setAttribute("onload","(async()=>{let e='html-load.com';const t=window,a=document,r=e=>new Promise((t=>{const a=.1*e,r=e+Math.floor(2*Math.random()*a)-a;setTimeout(t,r)})),o=t.addEventListener.bind(t),n=t.postMessage.bind(t),s=btoa,i='message',l=location,c=Math.random;try{const t=()=>new Promise(((e,t)=>{let a=c().toString(),r=c().toString();o(i,(e=>e.data===a&&n(r,'*'))),o(i,(t=>t.data===r&&e())),n(a,'*'),setTimeout((()=>{t(Error('Timeout'))}),1231)})),a=async()=>{try{let e=!1;const a=c().toString();if(o(i,(t=>{t.data===a+'_as_res'&&(e=!0)})),n(a+'_as_req','*'),await t(),await r(500),e)return!0}catch(e){}return!1},s=[100,500,1e3];for(let o=0;o<=s.length&&!await a();o++){if(o===s.length-1)throw'Failed to load website properly since '+e+' is tainted. Please allow '+e;await r(s[o])}}catch(d){try{const e=a.querySelector('script#Tqgkgu').getAttribute('onerror');t[s(l.hostname+'_show_bfa')]=d,await new Promise(((t,r)=>{o('message',(e=>{'as_modal_loaded'===e.data&&t()})),setTimeout((()=>r(d)),3e3);const n=a.createElement('script');n.innerText=e,a.head.appendChild(n),n.remove()}))}catch(m){(t=>{const a='https://report.error-report.com/modal';try{confirm('There was a problem loading the page. Please click OK to learn more.')?l.href=a+'?url='+s(l.href)+'&error='+s(t)+'&domain='+e:l.reload()}catch(d){location.href=a+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+e}})(d)}}})();"),e.setAttribute("onerror","(async()=>{const e=window,t=document;let r=JSON.parse(atob('WyJodG1sLWxvYWQuY29tIiwiZmIuaHRtbC1sb2FkLmNvbSIsImQzN2o4cGZ4dTJpb2dpLmNsb3VkZnJvbnQubmV0IiwiY29udGVudC1sb2FkZXIuY29tIiwiZmIuY29udGVudC1sb2FkZXIuY29tIl0=')),o=r[0];const a='addEventListener',n='setAttribute',s='getAttribute',i=location,l=clearInterval,c='as_retry',d=i.hostname,h=e.addEventListener.bind(e),m=btoa,u='https://report.error-report.com/modal',b=e=>{try{confirm('There was a problem loading the page. Please click OK to learn more.')?i.href=u+'?url='+m(i.href)+'&error='+m(e)+'&domain='+o:i.reload()}catch(t){location.href=u+'?eventId=&error=Vml0YWwgQVBJIGJsb2NrZWQ%3D&domain='+o}},p=async e=>{try{localStorage.setItem(i.host+'_fa_'+m('last_bfa_at'),Date.now().toString())}catch(p){}setInterval((()=>t.querySelectorAll('link,style').forEach((e=>e.remove()))),100);const r=await fetch('https://error-report.com/report?type=loader_light&url='+m(i.href)+'&error='+m(e),{method:'POST'}).then((e=>e.text())),a=new Promise((e=>{h('message',(t=>{'as_modal_loaded'===t.data&&e()}))}));let s=t.createElement('iframe');s.src=u+'?url='+m(i.href)+'&eventId='+r+'&error='+m(e)+'&domain='+o,s[n]('style','width:100vw;height:100vh;z-index:2147483647;position:fixed;left:0;top:0;');const c=e=>{'close-error-report'===e.data&&(s.remove(),removeEventListener('message',c))};h('message',c),t.body.appendChild(s);const d=setInterval((()=>{if(!t.contains(s))return l(d);(()=>{const e=s.getBoundingClientRect();return'none'!==getComputedStyle(s).display&&0!==e.width&&0!==e.height})()||(l(d),b(e))}),1e3);await new Promise(((t,r)=>{a.then(t),setTimeout((()=>r(e)),3e3)}))},f=m(d+'_show_bfa');if(e[f])p(e[f]);else try{if(void 0===e[c]&&(e[c]=0),e[c]>=r.length)throw'Failed to load website properly since '+o+' is blocked. Please allow '+o;if((()=>{const t=e=>{let t=0;for(let r=0,o=e.length;o>r;r++)t=(t<<5)-t+e.charCodeAt(r),t|=0;return t},r=Date.now(),o=r-r%864e5,a=o-864e5,n=o+864e5,s='loader-check',i='as_'+t(s+'_'+o),l='as_'+t(s+'_'+a),c='as_'+t(s+'_'+n);return i!==l&&i!==c&&l!==c&&!!(e[i]||e[l]||e[c])})())return;const i=t.querySelector('#Tqgkgu'),l=t.createElement('script');for(let e=0;e<i.attributes.length;e++)l[n](i.attributes[e].name,i.attributes[e].value);const h=m(d+'_onload');e[h]&&l[a]('load',e[h]);const u=m(d+'_onerror');e[u]&&l[a]('error',e[u]);const b=new e.URL(i[s]('src'));b.host=r[e[c]++],l[n]('src',b.href),i[n]('id',i[s]('id')+'_'),i.parentNode.insertBefore(l,i),i.remove()}catch(w){try{await p(w)}catch(w){b(w)}}})();"),document.head.appendChild(e);var t=document.createElement("script");t.setAttribute("data-cfasync","false"),t.setAttribute("nowprocket",""),t.textContent="(async()=>{function t(t) { const e = t.length; let o = ''; for (let r = 0; e > r; r++) { o += t[2939 * (r + 20) % e] } return o }const e=window,o=t('Elementcreate'),r=t('pielnddaCph'),n=t('erdeLtedvtsnaEni'),c=t('tAtesetubirt'),a=document,i=a.head,s=a[o].bind(a),d=i[r].bind(i),l=location,m=l.hostname,h=btoa;e[n].bind(e);let u=t('oad.comhtml-l');(async()=>{try{const n=a.querySelector(t('#Tqgkguscript'));if(!n)throw t('onnaC dnif t')+u+t('i.cp rts');const i=n.getAttribute(t('nororre')),f=n.getAttribute(t('aolnod')),p=await new Promise((o=>{const r=t('x')+Math.floor(1e6*Math.random());e[r]=()=>o(!0);const n=s(t('pircst'));n.src=t(':atad;'),n[c](t('nororre'),t('iw.wodn')+r+t('()')),d(n),setTimeout((()=>{o(!1), n.remove()}),251)}));if(p)return;function o(){const e=s(t('pircst'));e.innerText=i,d(e),e.remove()}const b=h(m+t('o_daoln')),w=h(m+t('rrnr_eoo'));e[b]=function(){const e=s(t('pircst'));e.innerText=f,d(e),e.remove()},e[w]=o,o()}catch(r){(e => { const o = t('ro/treeol/t-.dsoormterpmh/.rca:rrtopp'); try { const r = t('cleopr   eges.eke aremtc. m Ta apdo ool t ahrOsaibwr iPhl enKegnlael'); confirm(r) ? l.href = o + t('?=lru') + h(l.href) + t('e&=rorr') + h(e) + t('a=oi&mnd') + u : l.reload() } catch (r) { location.href = o + t('J%ndVVNdvrYGQiI=Q2&ee0IWatrgbD?&lJZmnows3==mBroerW') + u } })(r)}})()})();",document.head.appendChild(t)}!function(){var r=e();if("true"===r)t();else var o=0,a=setInterval(function(){if(100!==o&&"false"!==r){if("true"===r)return t(),void clearInterval(a);r=e(),o++}else clearInterval(a)},50)}()}();</script></body></html>