
// ── 4. Deploy matching-properties standalone page ──────────────────────────
add_action('wp_ajax_gn_deploy_matching_properties_page', function() {
    if (!current_user_can('manage_options')) wp_die('Unauthorized');
    
    $plugin_base = WP_PLUGIN_DIR . '/movefaster-crm-bridge-social-login-fix-v3-1-geo-carousel-v1-sold-label-fix-v2-map-card-highlight-fix-v1/mf-crm/gln-lahat-functions';
    $target_file = $plugin_base . '/gn-matching-properties-page.php';
    
    if (file_exists($target_file) && strpos(file_get_contents($target_file), 'gn_render_matching_properties_page') !== false) {
        flush_rewrite_rules();
        wp_send_json_success('Already deployed (' . filesize($target_file) . ' bytes) - rewrites flushed');
        return;
    }
    
    $b64 = 'PD9waHAKLyoqCiAqIEdOIE1hdGNoaW5nIFByb3BlcnRpZXMg4oCUIFB1YmxpYyBTdGFuZGFsb25lIFBhZ2UKICoKICogUmVnaXN0ZXJzIHRoZSBVUkw6IC9tYXRjaGluZy1wcm9wZXJ0aWVzL3t0b2tlbn0KICogRmV0Y2hlcyBtYXRjaGluZyBwcm9wZXJ0aWVzIGZyb20gRXNwb0NSTSBBUEkgYW5kIHJlbmRlcnMgYW4gQXBwbGUtaW5zcGlyZWQgcGFnZS4KICoKICogQHBhY2thZ2UgR05fTW92ZUZhc3Rlcl9Fc3BvQ1JNX1JlYWxFc3RhdGVQcm9wZXJ0eV9CcmlkZ2UKICovCgppZiAoICEgZGVmaW5lZCggJ0FCU1BBVEgnICkgKSB7CiAgICBleGl0Owp9CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogMS4gUmVnaXN0ZXIgcmV3cml0ZSBydWxlOiAvbWF0Y2hpbmctcHJvcGVydGllcy97dG9rZW59CiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwphZGRfYWN0aW9uKCAnaW5pdCcsIGZ1bmN0aW9uICgpIHsKICAgIGFkZF9yZXdyaXRlX3J1bGUoCiAgICAgICAgJ15tYXRjaGluZy1wcm9wZXJ0aWVzLyhbYS16QS1aMC05XSspLz8kJywKICAgICAgICAnaW5kZXgucGhwP2duX21hdGNoaW5nX3Byb3BzX3Rva2VuPSRtYXRjaGVzWzFdJywKICAgICAgICAndG9wJwogICAgKTsKfSk7CgphZGRfZmlsdGVyKCAncXVlcnlfdmFycycsIGZ1bmN0aW9uICggJHZhcnMgKSB7CiAgICAkdmFyc1tdID0gJ2duX21hdGNoaW5nX3Byb3BzX3Rva2VuJzsKICAgIHJldHVybiAkdmFyczsKfSk7CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogMi4gSW50ZXJjZXB0IHRoZSByZXF1ZXN0IGFuZCByZW5kZXIgdGhlIHBhZ2UKICog4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCmFkZF9hY3Rpb24oICd0ZW1wbGF0ZV9yZWRpcmVjdCcsIGZ1bmN0aW9uICgpIHsKICAgICR0b2tlbiA9IGdldF9xdWVyeV92YXIoICdnbl9tYXRjaGluZ19wcm9wc190b2tlbicgKTsKICAgIGlmICggZW1wdHkoICR0b2tlbiApICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkdG9rZW4gPSBwcmVnX3JlcGxhY2UoICcvW15hLXpBLVowLTldLycsICcnLCAkdG9rZW4gKTsKICAgIGlmICggc3RybGVuKCAkdG9rZW4gKSA8IDEwICkgewogICAgICAgIHdwX2RpZSggJ0ludmFsaWQgbGluay4nLCAnTWF0Y2hpbmcgUHJvcGVydGllcycsIFsgJ3Jlc3BvbnNlJyA9PiA0MDQgXSApOwogICAgfQoKICAgICRhcGlfYmFzZSA9ICdodHRwczovL2FwcC5kaWdpdGFsZ2xhc3MuYWkvYXBpL3YxJzsKCiAgICBnbl9yZW5kZXJfbWF0Y2hpbmdfcHJvcGVydGllc19wYWdlKCAkdG9rZW4sICRhcGlfYmFzZSApOwogICAgZXhpdDsKfSk7CgovKiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICogMy4gUmVuZGVyIGZ1bmN0aW9uCiAqIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgCAqLwpmdW5jdGlvbiBnbl9yZW5kZXJfbWF0Y2hpbmdfcHJvcGVydGllc19wYWdlKCBzdHJpbmcgJHRva2VuLCBzdHJpbmcgJGFwaV9iYXNlICk6IHZvaWQgewogICAgLy8gRmV0Y2ggcmVxdWVzdCBpbmZvIChjb250YWN0IG5hbWUsIHNlYXJjaCBjcml0ZXJpYSkKICAgICRpbmZvX3VybCAgPSAkYXBpX2Jhc2UgLiAnL1JlYWxFc3RhdGVSZXF1ZXN0UmFlL2FjdGlvbi9yZXF1ZXN0SW5mb1B1YmxpYz90b2tlbj0nIC4gdXJsZW5jb2RlKCAkdG9rZW4gKTsKICAgICRpbmZvX3Jlc3AgPSB3cF9yZW1vdGVfZ2V0KCAkaW5mb191cmwsIFsgJ3RpbWVvdXQnID0+IDE1LCAnc3NsdmVyaWZ5JyA9PiBmYWxzZSBdICk7CgogICAgaWYgKCBpc193cF9lcnJvciggJGluZm9fcmVzcCApICkgewogICAgICAgICRpbmZvID0gW107CiAgICB9IGVsc2UgewogICAgICAgICRpbmZvID0ganNvbl9kZWNvZGUoIHdwX3JlbW90ZV9yZXRyaWV2ZV9ib2R5KCAkaW5mb19yZXNwICksIHRydWUgKSA/OiBbXTsKICAgIH0KCiAgICAvLyBGZXRjaCBtYXRjaGluZyBwcm9wZXJ0aWVzCiAgICAkcHJvcHNfdXJsICA9ICRhcGlfYmFzZSAuICcvUmVhbEVzdGF0ZVJlcXVlc3RSYWUvYWN0aW9uL21hdGNoaW5nUHJvcGVydGllc1B1YmxpYz90b2tlbj0nIC4gdXJsZW5jb2RlKCAkdG9rZW4gKSAuICcmcGFnZT0xJnBhZ2VTaXplPTUwJzsKICAgICRwcm9wc19yZXNwID0gd3BfcmVtb3RlX2dldCggJHByb3BzX3VybCwgWyAndGltZW91dCcgPT4gMjAsICdzc2x2ZXJpZnknID0+IGZhbHNlIF0gKTsKCiAgICBpZiAoIGlzX3dwX2Vycm9yKCAkcHJvcHNfcmVzcCApICkgewogICAgICAgICRwcm9wc19kYXRhID0gWyAnbGlzdCcgPT4gW10sICd0b3RhbCcgPT4gMCBdOwogICAgfSBlbHNlIHsKICAgICAgICAkcHJvcHNfZGF0YSA9IGpzb25fZGVjb2RlKCB3cF9yZW1vdGVfcmV0cmlldmVfYm9keSggJHByb3BzX3Jlc3AgKSwgdHJ1ZSApID86IFsgJ2xpc3QnID0+IFtdLCAndG90YWwnID0+IDAgXTsKICAgIH0KCiAgICAkY29udGFjdF9uYW1lICA9IGVzY19odG1sKCAkaW5mb1snY29udGFjdEZpcnN0TmFtZSddID8/ICcnICk7CiAgICAkcmVxdWVzdF9uYW1lICA9IGVzY19odG1sKCAkaW5mb1sncmVxdWVzdE5hbWUnXSA/PyAnWW91ciBNYXRjaGluZyBQcm9wZXJ0aWVzJyApOwogICAgJG1hdGNoX2NvdW50ICAgPSBpbnR2YWwoICRpbmZvWydtYXRjaENvdW50J10gPz8gY291bnQoICRwcm9wc19kYXRhWydsaXN0J10gPz8gW10gKSApOwogICAgJHByb3BlcnRpZXMgICAgPSAkcHJvcHNfZGF0YVsnbGlzdCddID8/IFtdOwoKICAgIC8vIEJ1aWxkIGNyaXRlcmlhIHN1bW1hcnkKICAgICRjcml0ZXJpYV9wYXJ0cyA9IFtdOwogICAgaWYgKCAhIGVtcHR5KCAkaW5mb1snY0NpdHknXSApICkgICAgICAgICAgICAkY3JpdGVyaWFfcGFydHNbXSA9IGVzY19odG1sKCAkaW5mb1snY0NpdHknXSApOwogICAgaWYgKCAhIGVtcHR5KCAkaW5mb1snY1Byb3BlcnR5VHlwZSddICkgKSAgICAkY3JpdGVyaWFfcGFydHNbXSA9IGVzY19odG1sKCAkaW5mb1snY1Byb3BlcnR5VHlwZSddICk7CiAgICBpZiAoICEgZW1wdHkoICRpbmZvWydjTGlzdFByaWNlTWluJ10gKSApICAgICRjcml0ZXJpYV9wYXJ0c1tdID0gJ0Zyb20gJCcgLiBudW1iZXJfZm9ybWF0KCAkaW5mb1snY0xpc3RQcmljZU1pbiddICk7CiAgICBpZiAoICEgZW1wdHkoICRpbmZvWydjTGlzdFByaWNlTWF4J10gKSApICAgICRjcml0ZXJpYV9wYXJ0c1tdID0gJ1VwIHRvICQnIC4gbnVtYmVyX2Zvcm1hdCggJGluZm9bJ2NMaXN0UHJpY2VNYXgnXSApOwogICAgaWYgKCAhIGVtcHR5KCAkaW5mb1snY0JlZHJvb21zVG90YWxNaW4nXSApICkgJGNyaXRlcmlhX3BhcnRzW10gPSAkaW5mb1snY0JlZHJvb21zVG90YWxNaW4nXSAuICcrIGJlZHMnOwogICAgJGNyaXRlcmlhX3N0ciA9IGltcGxvZGUoICcgwrcgJywgJGNyaXRlcmlhX3BhcnRzICk7CgogICAgPz4KPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CjxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPgo8dGl0bGU+PD9waHAgZWNobyAkcmVxdWVzdF9uYW1lOyA/PiDigJQgTW92ZUZhc3RlcjwvdGl0bGU+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCwgbm9mb2xsb3ciPgo8bGluayByZWw9InByZWNvbm5lY3QiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20iPgo8bGluayBocmVmPSJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PUludGVyOndnaHRAMzAwOzQwMDs1MDA7NjAwOzcwMCZkaXNwbGF5PXN3YXAiIHJlbD0ic3R5bGVzaGVldCI+CjxzdHlsZT4KICAqLCAqOjpiZWZvcmUsICo6OmFmdGVyIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyB9CiAgYm9keSB7CiAgICBmb250LWZhbWlseTogJ0ludGVyJywgLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LCAnU2Vnb2UgVUknLCBzYW5zLXNlcmlmOwogICAgYmFja2dyb3VuZDogI2Y1ZjVmNzsKICAgIGNvbG9yOiAjMWQxZDFmOwogICAgbWluLWhlaWdodDogMTAwdmg7CiAgfQoKICAvKiDilIDilIAgSGVhZGVyIOKUgOKUgCAqLwogIC5tZi1oZWFkZXIgewogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjg1KTsKICAgIGJhY2tkcm9wLWZpbHRlcjogc2F0dXJhdGUoMTgwJSkgYmx1cigyMHB4KTsKICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBzYXR1cmF0ZSgxODAlKSBibHVyKDIwcHgpOwogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4wOCk7CiAgICBwb3NpdGlvbjogc3RpY2t5OyB0b3A6IDA7IHotaW5kZXg6IDEwMDsKICAgIHBhZGRpbmc6IDAgMjRweDsKICB9CiAgLm1mLWhlYWRlci1pbm5lciB7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsgbWFyZ2luOiAwIGF1dG87CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBoZWlnaHQ6IDYwcHg7CiAgfQogIC5tZi1sb2dvIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiAxMHB4OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KICAubWYtbG9nbyBpbWcgeyBoZWlnaHQ6IDMycHg7IH0KICAubWYtbG9nby10ZXh0IHsgZm9udC1zaXplOiAxN3B4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFkMWQxZjsgfQogIC5tZi1oZWFkZXItY3RhIHsKICAgIGJhY2tncm91bmQ6ICMwMDcxZTM7IGNvbG9yOiAjZmZmOwogICAgcGFkZGluZzogOHB4IDE4cHg7IGJvcmRlci1yYWRpdXM6IDk4MHB4OwogICAgZm9udC1zaXplOiAxM3B4OyBmb250LXdlaWdodDogNTAwOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzOwogIH0KICAubWYtaGVhZGVyLWN0YTpob3ZlciB7IGJhY2tncm91bmQ6ICMwMDc3ZWQ7IH0KCiAgLyog4pSA4pSAIEhlcm8g4pSA4pSAICovCiAgLm1mLWhlcm8gewogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzFhMWEyZSAwJSwgIzE2MjEzZSA1MCUsICMwZjM0NjAgMTAwJSk7CiAgICBjb2xvcjogI2ZmZjsKICAgIHBhZGRpbmc6IDYwcHggMjRweCA1MHB4OwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KICAubWYtaGVyby1ncmVldGluZyB7CiAgICBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjcpOwogICAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4OwogICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIG1hcmdpbi1ib3R0b206IDEycHg7CiAgfQogIC5tZi1oZXJvLXRpdGxlIHsKICAgIGZvbnQtc2l6ZTogY2xhbXAoMjhweCwgNXZ3LCA0NHB4KTsKICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICBsaW5lLWhlaWdodDogMS4xNTsKICAgIG1hcmdpbi1ib3R0b206IDE2cHg7CiAgICBsZXR0ZXItc3BhY2luZzogLTAuNXB4OwogIH0KICAubWYtaGVyby1zdWJ0aXRsZSB7CiAgICBmb250LXNpemU6IDE2cHg7CiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjc1KTsKICAgIG1hcmdpbi1ib3R0b206IDI4cHg7CiAgICBtYXgtd2lkdGg6IDUwMHB4OwogICAgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsKICB9CiAgLm1mLWhlcm8tYmFkZ2UgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OwogICAgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjEyKTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LDI1NSwyNTUsMC4yKTsKICAgIGJvcmRlci1yYWRpdXM6IDk4MHB4OwogICAgcGFkZGluZzogOHB4IDIwcHg7CiAgICBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjkpOwogIH0KICAubWYtaGVyby1iYWRnZSAuZG90IHsKICAgIHdpZHRoOiA4cHg7IGhlaWdodDogOHB4OyBib3JkZXItcmFkaXVzOiA1MCU7CiAgICBiYWNrZ3JvdW5kOiAjMzBkMTU4OwogICAgYW5pbWF0aW9uOiBwdWxzZSAycyBpbmZpbml0ZTsKICB9CiAgQGtleWZyYW1lcyBwdWxzZSB7CiAgICAwJSwgMTAwJSB7IG9wYWNpdHk6IDE7IH0KICAgIDUwJSB7IG9wYWNpdHk6IDAuNDsgfQogIH0KCiAgLyog4pSA4pSAIENyaXRlcmlhIGJhciDilIDilIAgKi8KICAubWYtY3JpdGVyaWEtYmFyIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjA2KTsKICAgIHBhZGRpbmc6IDE0cHggMjRweDsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9CiAgLm1mLWNyaXRlcmlhLWJhci1pbm5lciB7CiAgICBtYXgtd2lkdGg6IDEyMDBweDsgbWFyZ2luOiAwIGF1dG87CiAgICBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNmU2ZTczOyBmb250LXdlaWdodDogNDAwOwogIH0KICAubWYtY3JpdGVyaWEtYmFyLWlubmVyIHN0cm9uZyB7IGNvbG9yOiAjMWQxZDFmOyBmb250LXdlaWdodDogNjAwOyB9CgogIC8qIOKUgOKUgCBNYWluIGNvbnRlbnQg4pSA4pSAICovCiAgLm1mLW1haW4gewogICAgbWF4LXdpZHRoOiAxMjAwcHg7CiAgICBtYXJnaW46IDAgYXV0bzsKICAgIHBhZGRpbmc6IDQwcHggMjRweCA4MHB4OwogIH0KCiAgLyog4pSA4pSAIFNlY3Rpb24gaGVhZGVyIOKUgOKUgCAqLwogIC5tZi1zZWN0aW9uLWhlYWRlciB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICBtYXJnaW4tYm90dG9tOiAyNHB4OwogIH0KICAubWYtc2VjdGlvbi10aXRsZSB7CiAgICBmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMWQxZDFmOwogIH0KICAubWYtc2VjdGlvbi1jb3VudCB7CiAgICBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNmU2ZTczOyBmb250LXdlaWdodDogNDAwOwogIH0KCiAgLyog4pSA4pSAIFByb3BlcnR5IGdyaWQg4pSA4pSAICovCiAgLm1mLWdyaWQgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDMwMHB4LCAxZnIpKTsKICAgIGdhcDogMjRweDsKICB9CgogIC8qIOKUgOKUgCBQcm9wZXJ0eSBjYXJkIOKUgOKUgCAqLwogIC5tZi1jYXJkIHsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAxOHB4OwogICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgIGJveC1zaGFkb3c6IDAgMXB4IDNweCByZ2JhKDAsMCwwLDAuMDQpLCAwIDRweCAxNnB4IHJnYmEoMCwwLDAsMC4wNCk7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4yNXMgZWFzZSwgYm94LXNoYWRvdyAwLjI1cyBlYXNlOwogICAgY3Vyc29yOiBwb2ludGVyOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgY29sb3I6IGluaGVyaXQ7CiAgICBkaXNwbGF5OiBibG9jazsKICB9CiAgLm1mLWNhcmQ6aG92ZXIgewogICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwogICAgYm94LXNoYWRvdzogMCA4cHggMzBweCByZ2JhKDAsMCwwLDAuMTApOwogIH0KICAubWYtY2FyZC1waG90byB7CiAgICB3aWR0aDogMTAwJTsgaGVpZ2h0OiAyMTBweDsgb2JqZWN0LWZpdDogY292ZXI7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGJhY2tncm91bmQ6ICNmNWY1Zjc7CiAgfQogIC5tZi1jYXJkLXBob3RvLXBsYWNlaG9sZGVyIHsKICAgIHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDIxMHB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2Y1ZjVmNyAwJSwgI2U4ZThlZCAxMDAlKTsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgY29sb3I6ICM4Njg2OGI7IGZvbnQtc2l6ZTogMTNweDsgZm9udC13ZWlnaHQ6IDUwMDsKICB9CiAgLm1mLWNhcmQtc3RhdHVzLWJhZGdlIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgIG1hcmdpbi10b3A6IC0yOHB4OwogICAgbWFyZ2luLWxlZnQ6IDE0cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBiYWNrZ3JvdW5kOiAjMWQxZDFmOwogICAgY29sb3I6ICNmZmY7CiAgICBmb250LXNpemU6IDEwcHg7IGZvbnQtd2VpZ2h0OiA2MDA7CiAgICBsZXR0ZXItc3BhY2luZzogMC41cHg7CiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgcGFkZGluZzogNHB4IDEwcHg7CiAgICBib3JkZXItcmFkaXVzOiA2cHg7CiAgfQogIC5tZi1jYXJkLXN0YXR1cy1iYWRnZS5hY3RpdmUgeyBiYWNrZ3JvdW5kOiAjMzBkMTU4OyBjb2xvcjogI2ZmZjsgfQogIC5tZi1jYXJkLXN0YXR1cy1iYWRnZS5zb2xkICAgeyBiYWNrZ3JvdW5kOiAjZmYzYjMwOyBjb2xvcjogI2ZmZjsgfQogIC5tZi1jYXJkLXN0YXR1cy1iYWRnZS5wZW5kaW5nIHsgYmFja2dyb3VuZDogI2ZmOWYwYTsgY29sb3I6ICNmZmY7IH0KICAubWYtY2FyZC1ib2R5IHsgcGFkZGluZzogMTZweCAyMHB4IDIwcHg7IH0KICAubWYtY2FyZC1wcmljZSB7CiAgICBmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiAjMWQxZDFmOwogICAgbWFyZ2luLWJvdHRvbTogNnB4OwogIH0KICAubWYtY2FyZC1hZGRyZXNzIHsKICAgIGZvbnQtc2l6ZTogMTRweDsgY29sb3I6ICMzYTNhM2M7IGZvbnQtd2VpZ2h0OiA1MDA7CiAgICBtYXJnaW4tYm90dG9tOiAycHg7CiAgICB3aGl0ZS1zcGFjZTogbm93cmFwOyBvdmVyZmxvdzogaGlkZGVuOyB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKICB9CiAgLm1mLWNhcmQtY2l0eSB7CiAgICBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjNmU2ZTczOwogICAgbWFyZ2luLWJvdHRvbTogMTRweDsKICB9CiAgLm1mLWNhcmQtZGV0YWlscyB7CiAgICBkaXNwbGF5OiBmbGV4OyBnYXA6IDE2cHg7CiAgICBmb250LXNpemU6IDEzcHg7IGNvbG9yOiAjM2EzYTNjOyBmb250LXdlaWdodDogNTAwOwogICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNmMmYyZjc7CiAgICBwYWRkaW5nLXRvcDogMTRweDsKICB9CiAgLm1mLWNhcmQtZGV0YWlsIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNXB4OwogIH0KICAubWYtY2FyZC1kZXRhaWwgc3ZnIHsgZmxleC1zaHJpbms6IDA7IH0KCiAgLyog4pSA4pSAIEVtcHR5IHN0YXRlIOKUgOKUgCAqLwogIC5tZi1lbXB0eSB7CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICBwYWRkaW5nOiA4MHB4IDI0cHg7CiAgICBjb2xvcjogIzZlNmU3MzsKICB9CiAgLm1mLWVtcHR5LWljb24gewogICAgZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAxNnB4OwogIH0KICAubWYtZW1wdHktdGl0bGUgewogICAgZm9udC1zaXplOiAyMHB4OyBmb250LXdlaWdodDogNjAwOyBjb2xvcjogIzFkMWQxZjsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICB9CiAgLm1mLWVtcHR5LXRleHQgewogICAgZm9udC1zaXplOiAxNXB4OyBjb2xvcjogIzZlNmU3MzsKICAgIG1heC13aWR0aDogMzYwcHg7IG1hcmdpbjogMCBhdXRvOwogIH0KCiAgLyog4pSA4pSAIEZvb3RlciDilIDilIAgKi8KICAubWYtZm9vdGVyIHsKICAgIGJhY2tncm91bmQ6ICMxZDFkMWY7CiAgICBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjYpOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgcGFkZGluZzogMzJweCAyNHB4OwogICAgZm9udC1zaXplOiAxM3B4OwogIH0KICAubWYtZm9vdGVyIGEgeyBjb2xvcjogcmdiYSgyNTUsMjU1LDI1NSwwLjgpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KICAubWYtZm9vdGVyIGE6aG92ZXIgeyBjb2xvcjogI2ZmZjsgfQoKICAvKiDilIDilIAgUmVzcG9uc2l2ZSDilIDilIAgKi8KICBAbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHsKICAgIC5tZi1oZXJvIHsgcGFkZGluZzogNDBweCAxNnB4IDM2cHg7IH0KICAgIC5tZi1tYWluIHsgcGFkZGluZzogMjRweCAxNnB4IDYwcHg7IH0KICAgIC5tZi1ncmlkIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7IH0KICB9Cjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+Cgo8IS0tIEhlYWRlciAtLT4KPGhlYWRlciBjbGFzcz0ibWYtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJtZi1oZWFkZXItaW5uZXIiPgogICAgPGEgaHJlZj0iaHR0cHM6Ly9tb3ZlZmFzdGVyLmNhIiBjbGFzcz0ibWYtbG9nbyI+CiAgICAgIDxzcGFuIGNsYXNzPSJtZi1sb2dvLXRleHQiPk1vdmVGYXN0ZXI8L3NwYW4+CiAgICA8L2E+CiAgICA8YSBocmVmPSJodHRwczovL21vdmVmYXN0ZXIuY2EvY29udGFjdC8iIGNsYXNzPSJtZi1oZWFkZXItY3RhIj5UYWxrIHRvIGFuIEFnZW50PC9hPgogIDwvZGl2Pgo8L2hlYWRlcj4KCjwhLS0gSGVybyAtLT4KPHNlY3Rpb24gY2xhc3M9Im1mLWhlcm8iPgogIDw/cGhwIGlmICggJGNvbnRhY3RfbmFtZSApIDogPz4KICA8ZGl2IGNsYXNzPSJtZi1oZXJvLWdyZWV0aW5nIj5Gb3IgPD9waHAgZWNobyAkY29udGFjdF9uYW1lOyA/PjwvZGl2PgogIDw/cGhwIGVuZGlmOyA/PgogIDxoMSBjbGFzcz0ibWYtaGVyby10aXRsZSI+PD9waHAgZWNobyAkcmVxdWVzdF9uYW1lOyA/PjwvaDE+CiAgPHAgY2xhc3M9Im1mLWhlcm8tc3VidGl0bGUiPgogICAgPD9waHAgaWYgKCAkbWF0Y2hfY291bnQgPiAwICkgOiA/PgogICAgICBXZSBmb3VuZCA8P3BocCBlY2hvICRtYXRjaF9jb3VudDsgPz4gcHJvcGVydDw/cGhwIGVjaG8gJG1hdGNoX2NvdW50ID09PSAxID8gJ3knIDogJ2llcyc7ID8+IG1hdGNoaW5nIHlvdXIgY3JpdGVyaWEuCiAgICA8P3BocCBlbHNlIDogPz4KICAgICAgV2UncmUgc2VhcmNoaW5nIGZvciBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggeW91ciBjcml0ZXJpYS4KICAgIDw/cGhwIGVuZGlmOyA/PgogIDwvcD4KICA8ZGl2IGNsYXNzPSJtZi1oZXJvLWJhZGdlIj4KICAgIDxzcGFuIGNsYXNzPSJkb3QiPjwvc3Bhbj4KICAgIDw/cGhwIGVjaG8gJG1hdGNoX2NvdW50OyA/PiBNYXRjaDw/cGhwIGVjaG8gJG1hdGNoX2NvdW50ICE9PSAxID8gJ2VzJyA6ICcnOyA/PiBGb3VuZAogIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8P3BocCBpZiAoICRjcml0ZXJpYV9zdHIgKSA6ID8+CjwhLS0gQ3JpdGVyaWEgYmFyIC0tPgo8ZGl2IGNsYXNzPSJtZi1jcml0ZXJpYS1iYXIiPgogIDxkaXYgY2xhc3M9Im1mLWNyaXRlcmlhLWJhci1pbm5lciI+CiAgICA8c3Ryb25nPlNlYXJjaCBDcml0ZXJpYTo8L3N0cm9uZz4gPD9waHAgZWNobyAkY3JpdGVyaWFfc3RyOyA/PgogIDwvZGl2Pgo8L2Rpdj4KPD9waHAgZW5kaWY7ID8+Cgo8IS0tIE1haW4gLS0+CjxtYWluIGNsYXNzPSJtZi1tYWluIj4KCiAgPD9waHAgaWYgKCBlbXB0eSggJHByb3BlcnRpZXMgKSApIDogPz4KICA8ZGl2IGNsYXNzPSJtZi1lbXB0eSI+CiAgICA8ZGl2IGNsYXNzPSJtZi1lbXB0eS1pY29uIj7wn4+gPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJtZi1lbXB0eS10aXRsZSI+Tm8gTWF0Y2hlcyBZZXQ8L2Rpdj4KICAgIDxwIGNsYXNzPSJtZi1lbXB0eS10ZXh0Ij4KICAgICAgV2UgaGF2ZW4ndCBmb3VuZCBhbnkgcHJvcGVydGllcyBtYXRjaGluZyB5b3VyIGNyaXRlcmlhIHlldC4gWW91ciBhZ2VudCB3aWxsIG5vdGlmeSB5b3UgYXMgc29vbiBhcyBuZXcgbGlzdGluZ3MgY29tZSB1cC4KICAgIDwvcD4KICA8L2Rpdj4KICA8P3BocCBlbHNlIDogPz4KCiAgPGRpdiBjbGFzcz0ibWYtc2VjdGlvbi1oZWFkZXIiPgogICAgPGRpdiBjbGFzcz0ibWYtc2VjdGlvbi10aXRsZSI+TWF0Y2hpbmcgUHJvcGVydGllczwvZGl2PgogICAgPGRpdiBjbGFzcz0ibWYtc2VjdGlvbi1jb3VudCI+PD9waHAgZWNobyBjb3VudCggJHByb3BlcnRpZXMgKTsgPz4gc2hvd248L2Rpdj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0ibWYtZ3JpZCI+CiAgICA8P3BocCBmb3JlYWNoICggJHByb3BlcnRpZXMgYXMgJHByb3AgKSA6CiAgICAgICRwcmljZSAgID0gISBlbXB0eSggJHByb3BbJ2NMaXN0UHJpY2UnXSApID8gJyQnIC4gbnVtYmVyX2Zvcm1hdCggKGZsb2F0KSAkcHJvcFsnY0xpc3RQcmljZSddICkgOiAn4oCUJzsKICAgICAgJGFkZHIgICAgPSBlc2NfaHRtbCggJHByb3BbJ2NVbnBhcnNlZEFkZHJlc3MnXSA/PyAkcHJvcFsnY1N0cmVldE51bWJlciddID8/ICcnICk7CiAgICAgIGlmICggZW1wdHkoICRhZGRyICkgJiYgISBlbXB0eSggJHByb3BbJ2NTdHJlZXROdW1iZXInXSApICkgewogICAgICAgICAgJGFkZHIgPSB0cmltKCAkcHJvcFsnY1N0cmVldE51bWJlciddIC4gJyAnIC4gKCAkcHJvcFsnY1N0cmVldE5hbWUnXSA/PyAnJyApICk7CiAgICAgIH0KICAgICAgJGNpdHkgICAgPSBlc2NfaHRtbCggJHByb3BbJ2NDaXR5J10gPz8gJycgKTsKICAgICAgJGJlZHMgICAgPSAkcHJvcFsnY0JlZHJvb21zVG90YWwnXSA/PyAkcHJvcFsnY0JlZHJvb21zVG90YWxJbnRlZ2VyJ10gPz8gbnVsbDsKICAgICAgJGJhdGhzICAgPSAkcHJvcFsnY0JhdGhyb29tc1RvdGFsRGVjaW1hbCddID8/ICRwcm9wWydjQmF0aHJvb21zVG90YWwnXSA/PyBudWxsOwogICAgICAkc3FmdCAgICA9ICRwcm9wWydjTGl2aW5nQXJlYSddID8/IG51bGw7CiAgICAgICRzdGF0dXMgID0gc3RydG9sb3dlciggJHByb3BbJ2NTdGFuZGFyZFN0YXR1cyddID8/ICdhY3RpdmUnICk7CiAgICAgICRwaG90byAgID0gZXNjX3VybCggJHByb3BbJ3Bob3RvVXJsJ10gPz8gJycgKTsKICAgICAgJG1scyAgICAgPSBlc2NfaHRtbCggJHByb3BbJ2NMaXN0aW5nSWQnXSA/PyAnJyApOwogICAgICAkcHJvcF91cmwgPSAnaHR0cHM6Ly9tb3ZlZmFzdGVyLmNhLz9zPScgLiB1cmxlbmNvZGUoICRtbHMgKTsKICAgID8+CiAgICA8YSBocmVmPSI8P3BocCBlY2hvICRwcm9wX3VybDsgPz4iIGNsYXNzPSJtZi1jYXJkIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+CiAgICAgIDw/cGhwIGlmICggJHBob3RvICkgOiA/PgogICAgICAgIDxpbWcgY2xhc3M9Im1mLWNhcmQtcGhvdG8iIHNyYz0iPD9waHAgZWNobyAkcGhvdG87ID8+IiBhbHQ9Ijw/cGhwIGVjaG8gJGFkZHI7ID8+IiBsb2FkaW5nPSJsYXp5Ij4KICAgICAgPD9waHAgZWxzZSA6ID8+CiAgICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1waG90by1wbGFjZWhvbGRlciI+Tm8gUGhvdG8gQXZhaWxhYmxlPC9kaXY+CiAgICAgIDw/cGhwIGVuZGlmOyA/PgoKICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1zdGF0dXMtYmFkZ2UgPD9waHAgZWNobyBlc2NfYXR0ciggJHN0YXR1cyApOyA/PiI+CiAgICAgICAgPD9waHAgZWNobyBlc2NfaHRtbCggdWNmaXJzdCggJHN0YXR1cyApICk7ID8+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1ib2R5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJtZi1jYXJkLXByaWNlIj48P3BocCBlY2hvICRwcmljZTsgPz48L2Rpdj4KICAgICAgICA8P3BocCBpZiAoICRhZGRyICkgOiA/PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1hZGRyZXNzIj48P3BocCBlY2hvICRhZGRyOyA/PjwvZGl2PgogICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgIDw/cGhwIGlmICggJGNpdHkgKSA6ID8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZi1jYXJkLWNpdHkiPjw/cGhwIGVjaG8gJGNpdHk7ID8+PC9kaXY+CiAgICAgICAgPD9waHAgZW5kaWY7ID8+CgogICAgICAgIDxkaXYgY2xhc3M9Im1mLWNhcmQtZGV0YWlscyI+CiAgICAgICAgICA8P3BocCBpZiAoICRiZWRzICE9PSBudWxsICkgOiA/PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1kZXRhaWwiPgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNMyA5bDktNyA5IDd2MTFhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ6Ii8+PHBvbHlsaW5lIHBvaW50cz0iOSAyMiA5IDEyIDE1IDEyIDE1IDIyIi8+PC9zdmc+CiAgICAgICAgICAgIDw/cGhwIGVjaG8gaW50dmFsKCAkYmVkcyApOyA/PiBiZAogICAgICAgICAgPC9kaXY+CiAgICAgICAgICA8P3BocCBlbmRpZjsgPz4KICAgICAgICAgIDw/cGhwIGlmICggJGJhdGhzICE9PSBudWxsICkgOiA/PgogICAgICAgICAgPGRpdiBjbGFzcz0ibWYtY2FyZC1kZXRhaWwiPgogICAgICAgICAgICA8c3ZnIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9IiM2ZTZlNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48cGF0aCBkPSJNNCAxMmgxNk00IDEyVjZhMiAyIDAgMCAxIDItMmgxMmEyIDIgMCAwIDEgMiAydjZNNCAxMnY1YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtNSIvPjwvc3ZnPgogICAgICAgICAgICA8P3BocCBlY2hvIG51bWJlcl9mb3JtYXQoIChmbG9hdCkgJGJhdGhzLCAxICk7ID8+IGJhCiAgICAgICAgICA8L2Rpdj4KICAgICAgICAgIDw/cGhwIGVuZGlmOyA/PgogICAgICAgICAgPD9waHAgaWYgKCAkc3FmdCApIDogPz4KICAgICAgICAgIDxkaXYgY2xhc3M9Im1mLWNhcmQtZGV0YWlsIj4KICAgICAgICAgICAgPHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjNmU2ZTczIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiIgcnk9IjIiLz48L3N2Zz4KICAgICAgICAgICAgPD9waHAgZWNobyBudW1iZXJfZm9ybWF0KCAoZmxvYXQpICRzcWZ0ICk7ID8+IHNxZnQKICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgICA8P3BocCBpZiAoICRtbHMgKSA6ID8+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJtZi1jYXJkLWRldGFpbCIgc3R5bGU9Im1hcmdpbi1sZWZ0OmF1dG87IGNvbG9yOiM4Njg2OGI7IGZvbnQtc2l6ZToxMXB4OyI+CiAgICAgICAgICAgIE1MU8KuIDw/cGhwIGVjaG8gJG1sczsgPz4KICAgICAgICAgIDwvZGl2PgogICAgICAgICAgPD9waHAgZW5kaWY7ID8+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9hPgogICAgPD9waHAgZW5kZm9yZWFjaDsgPz4KICA8L2Rpdj4KCiAgPD9waHAgZW5kaWY7ID8+Cgo8L21haW4+Cgo8IS0tIEZvb3RlciAtLT4KPGZvb3RlciBjbGFzcz0ibWYtZm9vdGVyIj4KICA8cD4KICAgIFByZXBhcmVkIGJ5IHlvdXIgTW92ZUZhc3RlciBhZ2VudCAmbmJzcDvCtyZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly9tb3ZlZmFzdGVyLmNhIj5tb3ZlZmFzdGVyLmNhPC9hPiAmbmJzcDvCtyZuYnNwOwogICAgPGEgaHJlZj0iaHR0cHM6Ly9tb3ZlZmFzdGVyLmNhL2NvbnRhY3QvIj5Db250YWN0IFVzPC9hPgogIDwvcD4KICA8cCBzdHlsZT0ibWFyZ2luLXRvcDo4cHg7IGZvbnQtc2l6ZToxMXB4OyBjb2xvcjpyZ2JhKDI1NSwyNTUsMjU1LDAuMzUpOyI+CiAgICBNTFPCriBkYXRhIGlzIHByb3ZpZGVkIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkuIE5vdCBpbnRlbmRlZCB0byBzb2xpY2l0IHByb3BlcnRpZXMgYWxyZWFkeSBsaXN0ZWQuCiAgPC9wPgo8L2Zvb3Rlcj4KCjwvYm9keT4KPC9odG1sPgogICAgPD9waHAKfQo=';
    $content = base64_decode($b64);
    $r = file_put_contents($target_file, $content);
    
    if ($r === false) {
        wp_send_json_error('Failed to write file to ' . $target_file);
        return;
    }
    
    flush_rewrite_rules();
    
    $main_plugin = WP_PLUGIN_DIR . '/movefaster-crm-bridge-social-login-fix-v3-1-geo-carousel-v1-sold-label-fix-v2-map-card-highlight-fix-v1/movefaster-crm-bridge.php';
    $main_content = file_get_contents($main_plugin);
    
    $include_line = "require_once plugin_dir_path(__FILE__) . 'mf-crm/gln-lahat-functions/gn-matching-properties-page.php';";
    
    if (strpos($main_content, 'gn-matching-properties-page.php') !== false) {
        wp_send_json_success('Deployed ' . $r . ' bytes - already included - rewrites flushed');
        return;
    }
    
    $mr_include = "require_once plugin_dir_path(__FILE__) . 'mf-crm/gln-lahat-functions/gln-market-report.php';";
    
    if (strpos($main_content, $mr_include) !== false) {
        $new_main = str_replace($mr_include, $mr_include . "\n" . $include_line, $main_content);
        file_put_contents($main_plugin, $new_main);
        wp_send_json_success('Deployed ' . $r . ' bytes + added include after market-report - rewrites flushed');
    } else {
        // Append before last ?>
        $pos = strrpos($main_content, '?>');
        if ($pos !== false) {
            $new_main = substr($main_content, 0, $pos) . $include_line . "\n" . substr($main_content, $pos);
        } else {
            $new_main = $main_content . "\n" . $include_line;
        }
        file_put_contents($main_plugin, $new_main);
        wp_send_json_success('Deployed ' . $r . ' bytes + appended include - rewrites flushed');
    }
});
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//movefaster.ca/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://movefaster.ca/post-sitemap1.xml</loc>
		<lastmod>2026-05-04T11:18:34+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/post-sitemap2.xml</loc>
		<lastmod>2026-05-04T11:12:02+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/post-sitemap3.xml</loc>
		<lastmod>2026-05-04T09:15:53+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap1.xml</loc>
		<lastmod>2026-04-29T19:11:26+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap2.xml</loc>
		<lastmod>2026-04-06T00:31:51+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap3.xml</loc>
		<lastmod>2026-04-06T00:22:36+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap4.xml</loc>
		<lastmod>2026-04-04T09:15:04+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap5.xml</loc>
		<lastmod>2026-03-28T16:51:48+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap6.xml</loc>
		<lastmod>2026-03-19T01:28:15+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/page-sitemap7.xml</loc>
		<lastmod>2026-03-15T20:21:45+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/category-sitemap.xml</loc>
		<lastmod>2026-05-04T11:18:34+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/video-sitemap.xml</loc>
		<lastmod>2026-02-26T12:30:10+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://movefaster.ca/local-sitemap.xml</loc>
		<lastmod>2025-12-09T02:59:28+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Rank Math SEO Plugin (c) Rank Math - rankmath.com -->