{"id":4575,"date":"2025-12-19T07:11:30","date_gmt":"2025-12-19T07:11:30","guid":{"rendered":"https:\/\/flj-pcb.com\/?p=4575"},"modified":"2025-12-19T08:07:37","modified_gmt":"2025-12-19T08:07:37","slug":"about-pcb-drill-compensation-simple-english","status":"publish","type":"post","link":"https:\/\/flj-pcb.com\/es\/about-pcb-drill-compensation-simple-english\/","title":{"rendered":"Acerca de la compensaci\u00f3n de taladros PCB"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"4575\" class=\"elementor elementor-4575\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-733c0b06 e-flex e-con-boxed e-con e-parent\" data-id=\"733c0b06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6269846d elementor-widget elementor-widget-text-editor\" data-id=\"6269846d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p data-start=\"49\" data-end=\"461\">No hay grandes individuos, sino grandes equipos. Gracias al trabajo en equipo, la primera fase del proyecto de automatizaci\u00f3n PCB CAM para <strong data-start=\"178\" data-end=\"194\">manejo de la red<\/strong> y <strong data-start=\"199\" data-end=\"217\">manejo de brocas<\/strong> est\u00e1 hecho. A continuaci\u00f3n, podemos pasar al motor de reglas de PCB. Aqu\u00ed hablo de la compensaci\u00f3n de taladros en ingenier\u00eda PCB. Como desarrollador de ingenier\u00eda PCB, deber\u00edas saber qu\u00e9 es y por qu\u00e9 funciona. A continuaci\u00f3n comparto los puntos clave sobre la compensaci\u00f3n de taladros.<\/p>\n<hr data-start=\"463\" data-end=\"466\" \/>\n<h2 data-start=\"468\" data-end=\"507\">1. \u00bfPor qu\u00e9 compensamos los tama\u00f1os de las brocas?<\/h2>\n<p data-start=\"509\" data-end=\"870\">Los tama\u00f1os de los orificios en los archivos de PCB que proporciona el cliente suelen significar el <em data-start=\"577\" data-end=\"584\">final<\/em> tama\u00f1o de los orificios. Durante la producci\u00f3n de las placas de circuito impreso, se recubre de cobre el interior de los orificios (o se les da un acabado superficial como HASL, ENIG, OSP, etc.). Esto hace que el agujero sea m\u00e1s peque\u00f1o. Para asegurarse de que el tama\u00f1o final del agujero cumple los requisitos, el paso CAM corrige el tama\u00f1o del taladro. Esto es la compensaci\u00f3n del taladro.<\/p>\n<p data-start=\"872\" data-end=\"1171\"><strong data-start=\"872\" data-end=\"889\">Un ejemplo real:<\/strong><br data-start=\"889\" data-end=\"892\" \/>Tama\u00f1o final del agujero: <strong data-start=\"909\" data-end=\"920\">1,00 mm<\/strong>. Acabado superficial: <strong data-start=\"938\" data-end=\"946\">ENIG<\/strong> (espesor de n\u00edquel 2,54 \u00b5m, espesor de oro 0,0254 \u00b5m). Siguiendo la clase II del IPC, el espesor medio del cobre chapado es de <strong data-start=\"1064\" data-end=\"1073\">20 \u00b5m<\/strong>. Si utilizamos <strong data-start=\"1085\" data-end=\"1096\">0,10 mm<\/strong> como valor de compensaci\u00f3n, el equipo CAM elegir\u00e1 un <strong data-start=\"1149\" data-end=\"1160\">1,10 mm<\/strong> broca.<\/p>\n<p data-start=\"872\" data-end=\"1171\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-4578\" src=\"https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example.webp\" alt=\"Real example\" width=\"336\" height=\"297\" srcset=\"https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example.webp 336w, https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example-300x265.webp 300w, https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/Real-example-14x12.webp 14w\" sizes=\"(max-width: 336px) 100vw, 336px\" \/><\/p>\n<hr data-start=\"1173\" data-end=\"1176\" \/>\n<h2 data-start=\"1178\" data-end=\"1216\">2. \u00bfC\u00f3mo hacemos la compensaci\u00f3n por perforaci\u00f3n?<\/h2>\n<p data-start=\"1218\" data-end=\"1445\">En primer lugar, hay que tener claros los tres par\u00e1metros clave de la indemnizaci\u00f3n por perforaci\u00f3n:<br data-start=\"1288\" data-end=\"1291\" \/><strong data-start=\"1291\" data-end=\"1298\">(1)<\/strong> Incremento de la broca,<br data-start=\"1319\" data-end=\"1322\" \/><strong data-start=\"1322\" data-end=\"1329\">(2)<\/strong> Valor de compensaci\u00f3n,<br data-start=\"1349\" data-end=\"1352\" \/><strong data-start=\"1352\" data-end=\"1359\">(3)<\/strong> Umbral de incremento (valor de avance).<br data-start=\"1394\" data-end=\"1397\" \/>Estas tres determinan c\u00f3mo aplicar la compensaci\u00f3n.<\/p>\n<h3 data-start=\"1447\" data-end=\"1475\">1) Incremento de la broca<\/h3>\n<p data-start=\"1476\" data-end=\"1773\">Depende de las brocas que compre la empresa. El incremento com\u00fan en la industria es <strong data-start=\"1558\" data-end=\"1567\">50 \u00b5m<\/strong>. Los tama\u00f1os t\u00edpicos de las brocas oscilan entre <strong data-start=\"1600\" data-end=\"1611\">0,10 mm<\/strong> a <strong data-start=\"1615\" data-end=\"1626\">6,35 mm<\/strong>. El paso m\u00e1s peque\u00f1o habitual entre brocas es <strong data-start=\"1674\" data-end=\"1685\">0,05 mm<\/strong>. As\u00ed que la biblioteca de taladros tiene tama\u00f1os como <strong data-start=\"1723\" data-end=\"1761\">0,10 mm, 0,15 mm, 0,20 mm, 0,25 mm<\/strong>, etc.<\/p>\n<h3 data-start=\"1775\" data-end=\"1802\">2) Valor de compensaci\u00f3n<\/h3>\n<p data-start=\"1803\" data-end=\"1952\">El equipo de procesos establece las normas de compensaci\u00f3n bas\u00e1ndose en los resultados de las pruebas en f\u00e1brica. Los valores de compensaci\u00f3n no var\u00edan mucho en el sector. Reglas comunes:<\/p>\n<ul data-start=\"1953\" data-end=\"2098\">\n<li data-start=\"1953\" data-end=\"2014\">\n<p data-start=\"1955\" data-end=\"2014\"><strong data-start=\"1955\" data-end=\"1975\">Placas con HASL<\/strong> (lata de spray): <strong data-start=\"1989\" data-end=\"2011\">compensar 0,15 mm<\/strong>.<\/p>\n<\/li>\n<li data-start=\"2015\" data-end=\"2098\">\n<p data-start=\"2017\" data-end=\"2098\"><strong data-start=\"2017\" data-end=\"2040\">Placas sin HASL<\/strong> (ENIG, esta\u00f1o de inmersi\u00f3n, OSP, etc.): <strong data-start=\"2075\" data-end=\"2097\">compensar 0,10 mm<\/strong>.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"2100\" data-end=\"2142\">3) Umbral de incremento (valor de avance)<\/h3>\n<p data-start=\"2143\" data-end=\"2403\">El equipo de proceso tambi\u00e9n establece la estrategia de selecci\u00f3n de la broca, similar a una regla de redondeo. Por ejemplo, cuando el incremento es <strong data-start=\"2273\" data-end=\"2282\">20 \u00b5m<\/strong>, si el resto despu\u00e9s de dividir por el incremento es <strong data-start=\"2336\" data-end=\"2347\">\u2265 20 \u00b5m<\/strong>, se redondea 50 \u00b5m; en caso contrario, se mantiene el tama\u00f1o inferior.<\/p>\n<p data-start=\"2405\" data-end=\"2737\"><strong data-start=\"2405\" data-end=\"2417\">Por ejemplo:<\/strong><br data-start=\"2417\" data-end=\"2420\" \/>Tama\u00f1o final del orificio = <strong data-start=\"2438\" data-end=\"2450\">1,025 mm<\/strong>, compensaci\u00f3n = <strong data-start=\"2467\" data-end=\"2478\">0,10 mm<\/strong>, as\u00ed que tama\u00f1o compensado = <strong data-start=\"2502\" data-end=\"2514\">1,125 mm<\/strong>. Pero no hay <strong data-start=\"2532\" data-end=\"2544\">1,125 mm<\/strong> taladro en la biblioteca. Utilice la regla del escal\u00f3n. El resto de 1,125 mm comparado con el escal\u00f3n de 0,05 mm es <strong data-start=\"2652\" data-end=\"2661\">25 \u00b5m<\/strong>. Desde <strong data-start=\"2669\" data-end=\"2686\">25 \u00b5m &gt; 20 \u00b5m<\/strong>, redondear 50 \u00b5m hacia arriba y elegir a <strong data-start=\"2719\" data-end=\"2730\">1,15 mm<\/strong> taladro.<\/p>\n<hr data-start=\"2739\" data-end=\"2742\" \/>\n<h3 data-start=\"2744\" data-end=\"2782\">Ejemplos reales de indemnizaci\u00f3n por perforaci\u00f3n<\/h3>\n<p data-start=\"2784\" data-end=\"2850\">Supongamos: incremento de perforaci\u00f3n = <strong data-start=\"2810\" data-end=\"2819\">50 \u00b5m<\/strong>, umbral de incremento = <strong data-start=\"2841\" data-end=\"2850\">20 \u00b5m<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"2852\" data-end=\"3097\">\n<thead data-start=\"2852\" data-end=\"2947\">\n<tr data-start=\"2852\" data-end=\"2947\">\n<th data-start=\"2852\" data-end=\"2868\" data-col-size=\"sm\">Agujero original<\/th>\n<th data-start=\"2868\" data-end=\"2883\" data-col-size=\"sm\">Compensaci\u00f3n<\/th>\n<th data-start=\"2883\" data-end=\"2904\" data-col-size=\"sm\">Tras la indemnizaci\u00f3n<\/th>\n<th data-start=\"2904\" data-end=\"2919\" data-col-size=\"sm\">Parte entera<\/th>\n<th data-start=\"2919\" data-end=\"2931\" data-col-size=\"sm\">Resto<\/th>\n<th data-start=\"2931\" data-end=\"2947\" data-col-size=\"sm\">Taladro elegido<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"2980\" data-end=\"3097\">\n<tr data-start=\"2980\" data-end=\"3038\">\n<td data-start=\"2980\" data-end=\"2991\" data-col-size=\"sm\">1,025 mm<\/td>\n<td data-start=\"2991\" data-end=\"2998\" data-col-size=\"sm\">0.10<\/td>\n<td data-start=\"2998\" data-end=\"3009\" data-col-size=\"sm\">1,125 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3009\" data-end=\"3016\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3016\" data-end=\"3027\">0,025 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3027\" data-end=\"3038\">1,15 mm<\/td>\n<\/tr>\n<tr data-start=\"3039\" data-end=\"3097\">\n<td data-start=\"3039\" data-end=\"3050\" data-col-size=\"sm\">1,016 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3050\" data-end=\"3057\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3057\" data-end=\"3068\">1,116 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3068\" data-end=\"3075\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"3075\" data-end=\"3086\">0,016 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"3086\" data-end=\"3097\">1,10 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<h4 data-start=\"3099\" data-end=\"3140\">C\u00f3mo calcular el tama\u00f1o de broca elegido<\/h4>\n<p data-start=\"3141\" data-end=\"3241\">Divida el tama\u00f1o del orificio compensado en una parte entera y una parte restante utilizando el incremento de perforaci\u00f3n:<\/p>\n<p data-start=\"3243\" data-end=\"3396\">Toma <strong data-start=\"3248\" data-end=\"3260\">1,125 mm<\/strong> como ejemplo:<br data-start=\"3275\" data-end=\"3278\" \/>1,125 \/ 0,05 = 22,5 \u2192 suelo a 22 \u2192 parte entera = 22 \u00d7 0,05 = <strong data-start=\"3341\" data-end=\"3352\">1,10 mm<\/strong>.<br data-start=\"3353\" data-end=\"3356\" \/>Resto = 1,125 % 0,05 = <strong data-start=\"3383\" data-end=\"3395\">0,025 mm<\/strong>.<\/p>\n<p data-start=\"3398\" data-end=\"3475\">A continuaci\u00f3n, compare el resto con el umbral de aumento (por ejemplo, 20 \u00b5m):<\/p>\n<ul data-start=\"3476\" data-end=\"3607\">\n<li data-start=\"3476\" data-end=\"3542\">\n<p data-start=\"3478\" data-end=\"3542\">Si resto &gt; umbral, tama\u00f1o broca = parte entera + 0,05 mm.<\/p>\n<\/li>\n<li data-start=\"3543\" data-end=\"3607\">\n<p data-start=\"3545\" data-end=\"3607\">Si resto \u2264 umbral, tama\u00f1o broca = parte entera + 0,00 mm.<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"3609\" data-end=\"3612\" \/>\n<h3 data-start=\"3614\" data-end=\"3653\">Resumen sobre el umbral elevador<\/h3>\n<p data-start=\"3654\" data-end=\"3897\">Cuando el incremento del taladro es <strong data-start=\"3682\" data-end=\"3691\">50 \u00b5m<\/strong>, El umbral de aumento es cr\u00edtico. Realiza una segunda correcci\u00f3n del tama\u00f1o compensado de la broca. Decide si \u201csubir\u201d o \u201cquedarse\u201d. La modificaci\u00f3n de este umbral cambia directamente el tama\u00f1o de perforaci\u00f3n elegido.<\/p>\n<p data-start=\"3899\" data-end=\"3943\"><strong data-start=\"3899\" data-end=\"3943\">M\u00e1s ejemplos (incremento de perforaci\u00f3n = 50 \u00b5m):<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"3945\" data-end=\"4209\">\n<thead data-start=\"3945\" data-end=\"4041\">\n<tr data-start=\"3945\" data-end=\"4041\">\n<th data-start=\"3945\" data-end=\"3961\" data-col-size=\"sm\">Agujero original<\/th>\n<th data-start=\"3961\" data-end=\"3976\" data-col-size=\"sm\">Compensaci\u00f3n<\/th>\n<th data-start=\"3976\" data-end=\"3990\" data-col-size=\"sm\">Despu\u00e9s de comp.<\/th>\n<th data-start=\"3990\" data-end=\"4000\" data-col-size=\"sm\">Entero<\/th>\n<th data-start=\"4000\" data-end=\"4012\" data-col-size=\"sm\">Resto<\/th>\n<th data-start=\"4012\" data-end=\"4032\" data-col-size=\"sm\">Umbral de incremento<\/th>\n<th data-start=\"4032\" data-end=\"4041\" data-col-size=\"sm\">Taladro<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"4079\" data-end=\"4209\">\n<tr data-start=\"4079\" data-end=\"4143\">\n<td data-start=\"4079\" data-end=\"4090\" data-col-size=\"sm\">1,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4090\" data-end=\"4096\">0.1<\/td>\n<td data-col-size=\"sm\" data-start=\"4096\" data-end=\"4107\">1,122 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4107\" data-end=\"4114\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"4114\" data-end=\"4125\">0,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4125\" data-end=\"4132\">0.02<\/td>\n<td data-col-size=\"sm\" data-start=\"4132\" data-end=\"4143\">1,15 mm<\/td>\n<\/tr>\n<tr data-start=\"4144\" data-end=\"4209\">\n<td data-start=\"4144\" data-end=\"4155\" data-col-size=\"sm\">1,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4155\" data-end=\"4161\">0.1<\/td>\n<td data-col-size=\"sm\" data-start=\"4161\" data-end=\"4172\">1,122 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4172\" data-end=\"4179\">1.10<\/td>\n<td data-col-size=\"sm\" data-start=\"4179\" data-end=\"4190\">0,022 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"4190\" data-end=\"4198\">0.025<\/td>\n<td data-col-size=\"sm\" data-start=\"4198\" data-end=\"4209\">1,10 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<hr data-start=\"4211\" data-end=\"4214\" \/>\n<h3 data-start=\"4216\" data-end=\"4266\">Opini\u00f3n personal sobre la fijaci\u00f3n del umbral del step-up<\/h3>\n<p data-start=\"4267\" data-end=\"4575\"><strong data-start=\"4267\" data-end=\"4285\">Pros y contras:<\/strong> Tras la compensaci\u00f3n, si el orificio final es un poco m\u00e1s grande, al menos se puede insertar la pieza. Si el agujero es demasiado peque\u00f1o, la pieza no puede insertarse. Por lo tanto, normalmente fijamos el umbral de aumento en <strong data-start=\"4477\" data-end=\"4486\">20 \u00b5m<\/strong> en lugar de <strong data-start=\"4498\" data-end=\"4507\">25 \u00b5m<\/strong>. La elecci\u00f3n exacta debe corresponder a cada proceso y valor de compensaci\u00f3n.<\/p>\n<p data-start=\"4577\" data-end=\"4862\"><strong data-start=\"4577\" data-end=\"4614\">Combinado con el valor de compensaci\u00f3n:<\/strong> Para placas con HASL en las que la compensaci\u00f3n es <strong data-start=\"4658\" data-end=\"4669\">0,15 mm<\/strong>, ya \u201csobrecompensa\u201d un poco y los agujeros finales tienden a ser ligeramente grandes. En ese caso, un umbral de <strong data-start=\"4791\" data-end=\"4800\">25 \u00b5m<\/strong> tambi\u00e9n puede funcionar. Utilice la regla del \u201cm\u00e1s cerca\u201d al elegir el taladro.<\/p>\n<hr data-start=\"4864\" data-end=\"4867\" \/>\n<h2 data-start=\"4869\" data-end=\"4943\">3. \u00bfC\u00f3mo garantizar que el tama\u00f1o final del orificio cumple los requisitos tras la compensaci\u00f3n?<\/h2>\n<h3 data-start=\"4945\" data-end=\"4983\">M\u00e9todo 1: Comprar brocas especiales<\/h3>\n<p data-start=\"4984\" data-end=\"5207\">El incremento est\u00e1ndar del taladro es <strong data-start=\"5012\" data-end=\"5021\">50 \u00b5m<\/strong> (pasos de 0,05 mm como 1,00, 1,05, 1,10, 1,15 mm). Con una tolerancia PTH de \u00b13 mil, un juego de brocas de 50 \u00b5m puede cubrir la tolerancia. Si la tolerancia es inferior, utilice brocas especiales.<\/p>\n<p data-start=\"5209\" data-end=\"5352\"><strong data-start=\"5209\" data-end=\"5222\">Ejemplo 1<\/strong> - Compare los incrementos de 50 \u00b5m frente a los de 25 \u00b5m:<br data-start=\"5259\" data-end=\"5262\" \/>Agujero original = <strong data-start=\"5278\" data-end=\"5290\">0,922 mm<\/strong>, compensaci\u00f3n = <strong data-start=\"5307\" data-end=\"5318\">0,10 mm<\/strong>, Tama\u00f1o compensado = <strong data-start=\"5339\" data-end=\"5351\">1,022 mm<\/strong>.<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"5354\" data-end=\"5545\">\n<thead data-start=\"5354\" data-end=\"5422\">\n<tr data-start=\"5354\" data-end=\"5422\">\n<th data-start=\"5354\" data-end=\"5365\" data-col-size=\"sm\">Original<\/th>\n<th data-start=\"5365\" data-end=\"5380\" data-col-size=\"sm\">Compensaci\u00f3n<\/th>\n<th data-start=\"5380\" data-end=\"5394\" data-col-size=\"sm\">Compensado<\/th>\n<th data-start=\"5394\" data-end=\"5406\" data-col-size=\"sm\">Incremento<\/th>\n<th data-start=\"5406\" data-end=\"5422\" data-col-size=\"sm\">Taladro elegido<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5450\" data-end=\"5545\">\n<tr data-start=\"5450\" data-end=\"5496\">\n<td data-start=\"5450\" data-end=\"5458\" data-col-size=\"sm\">0.922<\/td>\n<td data-col-size=\"sm\" data-start=\"5458\" data-end=\"5465\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5465\" data-end=\"5473\">1.022<\/td>\n<td data-col-size=\"sm\" data-start=\"5473\" data-end=\"5488\">0,05 (50 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5488\" data-end=\"5496\">1.05<\/td>\n<\/tr>\n<tr data-start=\"5497\" data-end=\"5545\">\n<td data-start=\"5497\" data-end=\"5505\" data-col-size=\"sm\">0.922<\/td>\n<td data-start=\"5505\" data-end=\"5512\" data-col-size=\"sm\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5512\" data-end=\"5520\">1.022<\/td>\n<td data-col-size=\"sm\" data-start=\"5520\" data-end=\"5536\">0,025 (25 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5536\" data-end=\"5545\">1.025<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"5547\" data-end=\"5689\">Diferencia: 1,050 - 1,022 = 0,028 mm; 1,025 - 1,022 = 0,003 mm. Cuanto menor sea la diferencia, mejor, as\u00ed que <strong data-start=\"5648\" data-end=\"5660\">1,025 mm<\/strong> (incremento de 25 \u00b5m) es mejor.<\/p>\n<p data-start=\"5691\" data-end=\"5818\"><strong data-start=\"5691\" data-end=\"5704\">Ejemplo 2<\/strong> - 50 \u00b5m frente a taladro especial:<br data-start=\"5730\" data-end=\"5733\" \/>Agujero original = <strong data-start=\"5749\" data-end=\"5761\">0,611 mm<\/strong>, compensaci\u00f3n = <strong data-start=\"5778\" data-end=\"5789\">0,10 mm<\/strong>, compensado = <strong data-start=\"5805\" data-end=\"5817\">0,711 mm<\/strong>.<\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"5820\" data-end=\"6018\">\n<thead data-start=\"5820\" data-end=\"5895\">\n<tr data-start=\"5820\" data-end=\"5895\">\n<th data-start=\"5820\" data-end=\"5831\" data-col-size=\"sm\">Original<\/th>\n<th data-start=\"5831\" data-end=\"5846\" data-col-size=\"sm\">Compensaci\u00f3n<\/th>\n<th data-start=\"5846\" data-end=\"5860\" data-col-size=\"sm\">Compensado<\/th>\n<th data-start=\"5860\" data-end=\"5879\" data-col-size=\"sm\">Incremento \/ Tipo<\/th>\n<th data-start=\"5879\" data-end=\"5895\" data-col-size=\"sm\">Taladro elegido<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"5923\" data-end=\"6018\">\n<tr data-start=\"5923\" data-end=\"5969\">\n<td data-start=\"5923\" data-end=\"5931\" data-col-size=\"sm\">0.611<\/td>\n<td data-col-size=\"sm\" data-start=\"5931\" data-end=\"5938\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5938\" data-end=\"5946\">0.711<\/td>\n<td data-col-size=\"sm\" data-start=\"5946\" data-end=\"5961\">0,05 (50 \u00b5m)<\/td>\n<td data-col-size=\"sm\" data-start=\"5961\" data-end=\"5969\">0.70<\/td>\n<\/tr>\n<tr data-start=\"5970\" data-end=\"6018\">\n<td data-start=\"5970\" data-end=\"5978\" data-col-size=\"sm\">0.611<\/td>\n<td data-col-size=\"sm\" data-start=\"5978\" data-end=\"5985\">0.10<\/td>\n<td data-col-size=\"sm\" data-start=\"5985\" data-end=\"5993\">0.711<\/td>\n<td data-col-size=\"sm\" data-start=\"5993\" data-end=\"6009\">Taladro especial<\/td>\n<td data-col-size=\"sm\" data-start=\"6009\" data-end=\"6018\">0.711<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"6020\" data-end=\"6161\">Diferencia: 0,700 - 0,711 = -0,011 mm; 0,711 - 0,711 = 0,000 mm. Cuanto menor sea la diferencia, mejor. As\u00ed que la <strong data-start=\"6126\" data-end=\"6152\">Broca especial de 0,711 mm<\/strong> es lo mejor.<\/p>\n<h3 data-start=\"6163\" data-end=\"6206\">M\u00e9todo 2: Mejorar el proceso y los equipos<\/h3>\n<ul data-start=\"6207\" data-end=\"6752\">\n<li data-start=\"6207\" data-end=\"6296\">\n<p data-start=\"6209\" data-end=\"6296\">A\u00f1ada un segundo paso de chapado de la placa para reducir el grosor desigual de la distribuci\u00f3n del patr\u00f3n.<\/p>\n<\/li>\n<li data-start=\"6297\" data-end=\"6395\">\n<p data-start=\"6299\" data-end=\"6395\">Utilice el fotograbado directo negativo y planche toda la placa para reducir el grosor desigual del cobre.<\/p>\n<\/li>\n<li data-start=\"6396\" data-end=\"6538\">\n<p data-start=\"6398\" data-end=\"6538\">Reducir la densidad de corriente (la t\u00edpica es 19 ASF); una densidad de corriente ligeramente inferior puede mejorar la uniformidad del metalizado, pero prolongar\u00e1 el tiempo de metalizado.<\/p>\n<\/li>\n<li data-start=\"6539\" data-end=\"6752\">\n<p data-start=\"6541\" data-end=\"6752\">Cambie a una l\u00ednea de metalizado horizontal. Las l\u00edneas de metalizado verticales a menudo dan cobre m\u00e1s grueso en el borde del agujero y cobre m\u00e1s fino en el centro del agujero para agujeros de alta relaci\u00f3n de aspecto. Una l\u00ednea horizontal puede reducir este problema.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"6754\" data-end=\"6790\">M\u00e9todo 3: Mejorar las estrategias de CAM<\/h3>\n<ul data-start=\"6791\" data-end=\"7885\">\n<li data-start=\"6791\" data-end=\"7019\">\n<p data-start=\"6793\" data-end=\"7019\">Para agujeros en zonas de cobre aisladas, aplique un incremento extra de compensaci\u00f3n. Las zonas aisladas tienen menos cobre, por lo que durante el metalizado reciben una mayor densidad de corriente local y un mayor espesor de cobre; la compensaci\u00f3n extra compensa esto.<\/p>\n<\/li>\n<li data-start=\"7020\" data-end=\"7361\">\n<p data-start=\"7022\" data-end=\"7361\">Para dise\u00f1os con trazas densas en un lado y dispersas en el otro (por ejemplo, una placa de alimentaci\u00f3n), coloque el lado disperso hacia dentro y el lado denso hacia fuera, y utilice la panelizaci\u00f3n inversa. Durante el panelado, las zonas cercanas al borde de la placa reciben una mayor densidad de corriente y un chapado m\u00e1s grueso. La panelizaci\u00f3n inversa ayuda a equilibrar la distribuci\u00f3n del metalizado.<\/p>\n<\/li>\n<li data-start=\"7362\" data-end=\"7617\">\n<p data-start=\"7364\" data-end=\"7617\">Cuando las \u00e1reas de cobre SUPERIOR e INFERIOR difieran mucho, utilice paneles positivos\/negativos (yin-yang). Un \u00e1rea de cobre desigual provoca v\u00edas de \u201cboca de campana\u201d; cuanto m\u00e1s gruesa sea la placa y m\u00e1s cobre, peor ser\u00e1 el efecto; los paneles yin-yang ayudan a equilibrar la distribuci\u00f3n del cobre.<\/p>\n<\/li>\n<li data-start=\"7618\" data-end=\"7885\">\n<p data-start=\"7620\" data-end=\"7885\">Para los agujeros aislados cerca del borde de la placa o de las ranuras, a\u00f1ada zonas de \u201ccaptaci\u00f3n\u201d de cobre o almohadillas de cobre cerca del borde o de la ranura. Los agujeros aislados pueden tener demasiado espesor de metalizado y volverse demasiado peque\u00f1os; el cobre adicional cerca de ellos reduce la densidad de corriente local y equilibra el metalizado.<\/p>\n<\/li>\n<\/ul>\n<hr data-start=\"7887\" data-end=\"7890\" \/>\n<h2 data-start=\"7892\" data-end=\"7952\">4. \u00bfCu\u00e1nta compensaci\u00f3n se necesita y c\u00f3mo se obtiene?<\/h2>\n<p data-start=\"7954\" data-end=\"8087\">Los valores de compensaci\u00f3n proceden de pruebas de proceso. A continuaci\u00f3n se muestra un conjunto de cambios de tama\u00f1o de orificio medidos despu\u00e9s de varios pasos (datos de un informe):<\/p>\n<p data-start=\"8089\" data-end=\"8212\"><strong data-start=\"8089\" data-end=\"8106\">Flujo del proceso:<\/strong> perforaci\u00f3n mec\u00e1nica \u2192 cobre de inmersi\u00f3n \u2192 galvanoplastia \u2192 transferencia de patrones \u2192 grabado \u2192 AOI \u2192 pel\u00edcula h\u00fameda \u2192 HASL.<\/p>\n<p data-start=\"8214\" data-end=\"8239\"><strong data-start=\"8214\" data-end=\"8237\">Par\u00e1metros del proceso:<\/strong><\/p>\n<ul data-start=\"8240\" data-end=\"8515\">\n<li data-start=\"8240\" data-end=\"8330\">\n<p data-start=\"8242\" data-end=\"8330\">Broca: tama\u00f1o de broca 0,95 mm, reafilar\/reafilar 3 veces, compensaci\u00f3n de broca 0,15 mm;<\/p>\n<\/li>\n<li data-start=\"8331\" data-end=\"8386\">\n<p data-start=\"8333\" data-end=\"8386\">Revestimiento: espesor del cobre \u2265 18 \u00b5m, media \u2265 20 \u00b5m;<\/p>\n<\/li>\n<li data-start=\"8387\" data-end=\"8456\">\n<p data-start=\"8389\" data-end=\"8456\">HASL: requisito de agujero final 0,80 mm, tolerancia \u00b10,08 mm (3 mil);<\/p>\n<\/li>\n<li data-start=\"8457\" data-end=\"8515\">\n<p data-start=\"8459\" data-end=\"8515\">Ensayo: 10 paneles, esquinas recortadas, grosor del tablero 2,0 mm.<\/p>\n<\/li>\n<\/ul>\n<h3 data-start=\"8517\" data-end=\"8546\">El tama\u00f1o del orificio cambia por pasos<\/h3>\n<p data-start=\"8548\" data-end=\"8593\"><strong data-start=\"8548\" data-end=\"8569\">1) Tras la perforaci\u00f3n<\/strong> - tama\u00f1o de los orificios medidos<\/p>\n<ul data-start=\"8594\" data-end=\"8795\">\n<li data-start=\"8594\" data-end=\"8795\">\n<p data-start=\"8596\" data-end=\"8795\">Total: 1.920 agujeros probados (10 paneles, 384 agujeros cada uno). Muestra: 200 agujeros (20 por panel). Gama de agujeros: <strong data-start=\"8695\" data-end=\"8711\">0,93-0,94 mm<\/strong>, media <strong data-start=\"8721\" data-end=\"8733\">0,931 mm<\/strong>.<br data-start=\"8734\" data-end=\"8737\" \/>(A continuaci\u00f3n, una larga lista de valores muestreados, la mayor\u00eda de 0,93 o 0,94.)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"8797\" data-end=\"8848\"><strong data-start=\"8797\" data-end=\"8846\">2) Despu\u00e9s del revestimiento con patr\u00f3n - espesor del cobre<\/strong><\/p>\n<ul data-start=\"8849\" data-end=\"8999\">\n<li data-start=\"8849\" data-end=\"8999\">\n<p data-start=\"8851\" data-end=\"8999\">Para cada panel, pruebe 10 orificios. Gama de espesores de cobre <strong data-start=\"8905\" data-end=\"8917\">18-31 \u00b5m<\/strong>, reuni\u00f3n \u226518 \u00b5m y media \u226520 \u00b5m.<br data-start=\"8953\" data-end=\"8956\" \/>(A continuaci\u00f3n, muchas muestras de valores de espesor de cobre).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9001\" data-end=\"9045\"><strong data-start=\"9001\" data-end=\"9043\">3) Despu\u00e9s del metalizado - tama\u00f1o del agujero<\/strong><\/p>\n<ul data-start=\"9046\" data-end=\"9176\">\n<li data-start=\"9046\" data-end=\"9176\">\n<p data-start=\"9048\" data-end=\"9176\">Total 1920 agujeros, muestra 200. Rango de agujeros: <strong data-start=\"9090\" data-end=\"9106\">0,84-0,88 mm<\/strong>, media <strong data-start=\"9116\" data-end=\"9128\">0,858 mm<\/strong>.<br data-start=\"9129\" data-end=\"9132\" \/>(A continuaci\u00f3n, muchos valores de muestra, la mayor\u00eda de 0,85-0,88.)<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9178\" data-end=\"9209\"><strong data-start=\"9178\" data-end=\"9195\">4) Despu\u00e9s de HASL<\/strong> - tama\u00f1o del agujero<\/p>\n<ul data-start=\"9210\" data-end=\"9322\">\n<li data-start=\"9210\" data-end=\"9322\">\n<p data-start=\"9212\" data-end=\"9322\">Total 1920 agujeros, muestra 200. Rango de agujeros: <strong data-start=\"9254\" data-end=\"9270\">0,82-0,86 mm<\/strong>, media <strong data-start=\"9280\" data-end=\"9292\">0,836 mm<\/strong>.<br data-start=\"9293\" data-end=\"9296\" \/>(A continuaci\u00f3n, muchos valores de muestra).<\/p>\n<\/li>\n<\/ul>\n<p data-start=\"9324\" data-end=\"9340\"><strong data-start=\"9324\" data-end=\"9340\">Resumen de la prueba<\/strong><\/p>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"9342\" data-end=\"9531\">\n<thead data-start=\"9342\" data-end=\"9378\">\n<tr data-start=\"9342\" data-end=\"9378\">\n<th data-start=\"9342\" data-end=\"9349\" data-col-size=\"sm\">Paso<\/th>\n<th data-start=\"9349\" data-end=\"9362\" data-col-size=\"sm\">Alcance del orificio<\/th>\n<th data-start=\"9362\" data-end=\"9378\" data-col-size=\"sm\">Agujero medio<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"9395\" data-end=\"9531\">\n<tr data-start=\"9395\" data-end=\"9439\">\n<td data-start=\"9395\" data-end=\"9412\" data-col-size=\"sm\">Despu\u00e9s de taladrar<\/td>\n<td data-start=\"9412\" data-end=\"9427\" data-col-size=\"sm\">0,93-0,94 mm<\/td>\n<td data-start=\"9427\" data-end=\"9439\" data-col-size=\"sm\">0,931 mm<\/td>\n<\/tr>\n<tr data-start=\"9440\" data-end=\"9490\">\n<td data-start=\"9440\" data-end=\"9463\" data-col-size=\"sm\">Despu\u00e9s del cobreado<\/td>\n<td data-col-size=\"sm\" data-start=\"9463\" data-end=\"9478\">0,84-0,88 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"9478\" data-end=\"9490\">0,858 mm<\/td>\n<\/tr>\n<tr data-start=\"9491\" data-end=\"9531\">\n<td data-start=\"9491\" data-end=\"9504\" data-col-size=\"sm\">Despu\u00e9s de HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"9504\" data-end=\"9519\">0,82-0,86 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"9519\" data-end=\"9531\">0,836 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p data-start=\"9533\" data-end=\"9723\"><strong data-start=\"9533\" data-end=\"9548\">Conclusi\u00f3n:<\/strong> Para las placas HASL, la compensaci\u00f3n de perforaci\u00f3n de <strong data-start=\"9591\" data-end=\"9602\">0,15 mm<\/strong> es una \u201csobrecompensaci\u00f3n\u201d y hace que los agujeros finales sean m\u00e1s grandes. El mejor valor de compensaci\u00f3n en esta prueba es <strong data-start=\"9710\" data-end=\"9722\">0,125 mm<\/strong>.<\/p>\n<hr data-start=\"9725\" data-end=\"9728\" \/>\n<h2>5. Aplicaci\u00f3n del c\u00f3digo de compensaci\u00f3n de perforaci\u00f3n (normas)<\/h2>\n<ol data-start=\"9784\" data-end=\"9817\">\n<li data-start=\"9784\" data-end=\"9817\">\n<p data-start=\"9787\" data-end=\"9817\">Compensaci\u00f3n y reglas de step-up<\/p>\n<\/li>\n<\/ol>\n<div class=\"TyagGW_tableContainer\">\n<div class=\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\" tabindex=\"-1\">\n<table class=\"w-fit min-w-(--thread-content-width)\" data-start=\"9819\" data-end=\"10843\">\n<thead data-start=\"9819\" data-end=\"9968\">\n<tr data-start=\"9819\" data-end=\"9968\">\n<th data-start=\"9819\" data-end=\"9828\" data-col-size=\"sm\">Aspecto<\/th>\n<th data-start=\"9828\" data-end=\"9844\" data-col-size=\"sm\">Agujero terminado<\/th>\n<th data-start=\"9844\" data-end=\"9861\" data-col-size=\"sm\">Acabado superficial<\/th>\n<th data-start=\"9861\" data-end=\"9879\" data-col-size=\"sm\">Grosor del tablero<\/th>\n<th data-start=\"9879\" data-end=\"9899\" data-col-size=\"sm\">Umbral de incremento<\/th>\n<th data-start=\"9899\" data-end=\"9923\" data-col-size=\"sm\">Si v\u00eda cobre &lt; 26 \u00b5m<\/th>\n<th data-start=\"9923\" data-end=\"9934\" data-col-size=\"sm\">26-37 \u00b5m<\/th>\n<th data-start=\"9934\" data-end=\"9945\" data-col-size=\"sm\">37-47 \u00b5m<\/th>\n<th data-start=\"9945\" data-end=\"9956\" data-col-size=\"sm\">47-67 \u00b5m<\/th>\n<th data-start=\"9956\" data-end=\"9968\" data-col-size=\"sm\">67-86 \u00b5m<\/th>\n<\/tr>\n<\/thead>\n<tbody data-start=\"10018\" data-end=\"10843\">\n<tr data-start=\"10018\" data-end=\"10146\">\n<td data-start=\"10018\" data-end=\"10043\" data-col-size=\"sm\">relaci\u00f3n de espesores &lt; 12:1<\/td>\n<td data-start=\"10043\" data-end=\"10055\" data-col-size=\"sm\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10055\" data-end=\"10084\">HASL (con o sin plomo)<\/td>\n<td data-col-size=\"sm\" data-start=\"10084\" data-end=\"10095\">\u2265 3,5 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10095\" data-end=\"10105\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10105\" data-end=\"10113\">5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10113\" data-end=\"10121\">6 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10121\" data-end=\"10129\">7 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10129\" data-end=\"10137\">8 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10137\" data-end=\"10146\">9 millones<\/td>\n<\/tr>\n<tr data-start=\"10147\" data-end=\"10285\">\n<td data-start=\"10147\" data-end=\"10172\" data-col-size=\"sm\">relaci\u00f3n de espesores &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10172\" data-end=\"10184\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10184\" data-end=\"10213\">HASL (con o sin plomo)<\/td>\n<td data-col-size=\"sm\" data-start=\"10213\" data-end=\"10224\">&lt; 3,5 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10224\" data-end=\"10234\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10234\" data-end=\"10244\">4,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10244\" data-end=\"10254\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10254\" data-end=\"10264\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10264\" data-end=\"10274\">7,5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10274\" data-end=\"10285\">8,5 mil<\/td>\n<\/tr>\n<tr data-start=\"10286\" data-end=\"10395\">\n<td data-start=\"10286\" data-end=\"10311\" data-col-size=\"sm\">relaci\u00f3n de espesores &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10311\" data-end=\"10323\">\u2264 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10323\" data-end=\"10340\">Otros acabados<\/td>\n<td data-col-size=\"sm\" data-start=\"10340\" data-end=\"10344\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10344\" data-end=\"10354\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10354\" data-end=\"10362\">4 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10362\" data-end=\"10370\">5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10370\" data-end=\"10378\">6 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10378\" data-end=\"10386\">7 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10386\" data-end=\"10395\">8 millones<\/td>\n<\/tr>\n<tr data-start=\"10396\" data-end=\"10504\">\n<td data-start=\"10396\" data-end=\"10421\" data-col-size=\"sm\">relaci\u00f3n de espesores &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10421\" data-end=\"10433\">&gt; 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10433\" data-end=\"10440\">HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"10440\" data-end=\"10444\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10444\" data-end=\"10453\">0.0246<\/td>\n<td data-col-size=\"sm\" data-start=\"10453\" data-end=\"10463\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10463\" data-end=\"10473\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10473\" data-end=\"10483\">7,5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10483\" data-end=\"10493\">8,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10493\" data-end=\"10504\">9,5 millones<\/td>\n<\/tr>\n<tr data-start=\"10505\" data-end=\"10624\">\n<td data-start=\"10505\" data-end=\"10530\" data-col-size=\"sm\">relaci\u00f3n de espesores &lt; 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10530\" data-end=\"10542\">&gt; 1,90 mm<\/td>\n<td data-col-size=\"sm\" data-start=\"10542\" data-end=\"10559\">Otros acabados<\/td>\n<td data-col-size=\"sm\" data-start=\"10559\" data-end=\"10563\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10563\" data-end=\"10573\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10573\" data-end=\"10583\">4,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10583\" data-end=\"10593\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10593\" data-end=\"10603\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10603\" data-end=\"10613\">7,5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10613\" data-end=\"10624\">8,5 mil<\/td>\n<\/tr>\n<tr data-start=\"10625\" data-end=\"10733\">\n<td data-start=\"10625\" data-end=\"10650\" data-col-size=\"sm\">relaci\u00f3n de espesor \u2265 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10650\" data-end=\"10662\">todos los agujeros<\/td>\n<td data-col-size=\"sm\" data-start=\"10662\" data-end=\"10669\">HASL<\/td>\n<td data-col-size=\"sm\" data-start=\"10669\" data-end=\"10673\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10673\" data-end=\"10682\">0.0246<\/td>\n<td data-col-size=\"sm\" data-start=\"10682\" data-end=\"10692\">5,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10692\" data-end=\"10702\">6,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10702\" data-end=\"10712\">7,5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10712\" data-end=\"10722\">8,5 mil<\/td>\n<td data-col-size=\"sm\" data-start=\"10722\" data-end=\"10733\">9,5 millones<\/td>\n<\/tr>\n<tr data-start=\"10734\" data-end=\"10843\">\n<td data-start=\"10734\" data-end=\"10759\" data-col-size=\"sm\">relaci\u00f3n de espesor \u2265 12:1<\/td>\n<td data-col-size=\"sm\" data-start=\"10759\" data-end=\"10771\">todos los agujeros<\/td>\n<td data-col-size=\"sm\" data-start=\"10771\" data-end=\"10788\">Otros acabados<\/td>\n<td data-col-size=\"sm\" data-start=\"10788\" data-end=\"10792\">\/<\/td>\n<td data-col-size=\"sm\" data-start=\"10792\" data-end=\"10802\">0.01952<\/td>\n<td data-col-size=\"sm\" data-start=\"10802\" data-end=\"10810\">5 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10810\" data-end=\"10818\">6 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10818\" data-end=\"10826\">7 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10826\" data-end=\"10834\">8 millones<\/td>\n<td data-col-size=\"sm\" data-start=\"10834\" data-end=\"10843\">9 millones<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<ol start=\"2\" data-start=\"10845\" data-end=\"10953\">\n<li data-start=\"10845\" data-end=\"10953\">\n<p data-start=\"10848\" data-end=\"10953\">Tama\u00f1os de broca especiales (si la tolerancia es &lt; 3 mil, utilice brocas especiales o un incremento de 25 \u00b5m, utilice la regla de broca m\u00e1s cercana)<\/p>\n<\/li>\n<\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f7e142f elementor-widget elementor-widget-code-highlight\" data-id=\"f7e142f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-aspnet line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-aspnet\">\n\t\t\t\t\tLista ContainDrillToolList = new Lista();\r\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ec5424b elementor-widget elementor-widget-text-editor\" data-id=\"ec5424b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>3. C\u00f3digo de compensaci\u00f3n de perforaci\u00f3n<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3dfeb51 elementor-widget elementor-widget-code-highlight\" data-id=\"3dfeb51\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-csharp line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-csharp\">\n\t\t\t\t\t\/\/\/<summary>\r\n\/\/\/ Calcular el di\u00e1metro de la broca en funci\u00f3n de los par\u00e1metros de compensaci\u00f3n de la broca.\r\n\/\/\/<\/summary>\r\n\/\/\/Informaci\u00f3n b\u00e1sica de la herramienta de perforaci\u00f3n\r\n\/\/\/Par\u00e1metros de compensaci\u00f3n de la broca\r\n\/\/\/Lista de di\u00e1metros de brocas especiales\r\n\/\/\/Devuelve 1 si el c\u00e1lculo se ha realizado correctamente\r\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List ContainDrillToolList)\r\n{\r\n    if (ContainDrillToolList == null) ContainDrillToolList = new List();\r\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\r\n    switch (ToolInfo.type)\r\n    {\r\n        case \"via\":\r\n            UpParamHole = UpParam.Via;\r\n            break\r\n        case \"placa\":\r\n            UpParamHole = UpParam.Pth;\r\n            break\r\n        case \"nplate\":\r\n            UpParamHole = UpParam.Npth;\r\n            break;\r\n    }\r\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\r\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\r\n    if (ToolInfo.finish_size  49) \/\/Cuando el intervalo de paso es de 50\u03bcm, no utilizar brocas especiales.\r\n    {\r\n        ContainDrillToolList = new List();\r\n        UpLevel = UpParamHole.UpLevel;\r\n    }\r\n    else\r\n    {\r\n        UpLevel = UpParam.DrillLevel * 0.5; \/\/Seleccionar broca por la mitad del intervalo de paso\r\n    }\r\n\r\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5; \/\/Promediar la tolerancia superior e inferior\r\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \/ DrillSlotLevel)); \/\/Cuento de pasos de taladrado\r\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \/\/Redondee hacia abajo al paso de taladrado m\u00e1s cercano\r\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\/\/Resto del tama\u00f1o de perforaci\u00f3n tras la divisi\u00f3n de pasos\r\n    double DrillsizeLevel = (DrillsizeFloat &gt; UpLevel) ? DrillSlotLevel : 0;\/\/Determinar si se redondea el resto\r\n\r\n    \/\/Comprobar si se incluyen brocas especiales\r\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt =&gt; (int)(Math.Floor(tt \/ DrillSlotLevel)) == DrillLevelCount);\r\n    if (ContainDrillIndex &gt; -1)\r\n    {\r\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\/\/Remanente del tama\u00f1o especial de la broca tras la divisi\u00f3n del paso\r\n        if (DrillsizeFloat &gt; UpLevel) \/\/ ej. 38 &gt; 20\r\n        {\r\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel); \/\/e.g. 40-50\r\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); \/\/e.g. 40-38\r\n            DrillsizeLevel = (diff1 &lt; diff2) ? DrillSlotLevel : ContainDrillFloat;\r\n        }\r\n        else \/\/if (ContainDrillFloat &lt; UpLevel)\r\n        {\r\n            double diff1 = Math.Abs(DrillsizeFloat - 0); \/\/e.g. 12-0\r\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat); \/\/e.g. 12-16\r\n            DrillsizeLevel = (diff1  UpParamHole.UpLevel) ? DrillSlotLevel : 0;\/\/Determinar si se redondea el resto\r\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\r\n        }\r\n        si no\r\n        {\r\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \/ 10) * 10; \/\/ Redondear hacia abajo a los 10\u03bcm m\u00e1s cercanos\r\n            ToolInfo.slot_len = DrillsizeInt;\r\n        }\r\n        ToolInfo.drill_size += UpParam.SlotEndNumber; \/\/ A\u00f1adir n\u00famero de sufijo para la segmentaci\u00f3n de la broca de ranura.\r\n    }\r\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\r\n    return 1;\r\n}\r\n\r\npublic class gToolUpParam\r\n{\r\n    \/\/\/ <summary>\r\n    \/\/\/ Par\u00e1metros de compensaci\u00f3n para agujeros VIA (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole V\u00eda { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Par\u00e1metros de compensaci\u00f3n para PTH (Plated Through Hole) (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Par\u00e1metros de compensaci\u00f3n para NPTH (Non-Plated Through Hole) (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\r\n    \/\/\/ <summary>\r\n    \/\/\/ Intervalo de paso para taladros redondos (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public double DrillLevel { get; set; } = 50;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Intervalo de paso para taladros de ranura (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public double SlotLevel { get; set; } = 50;\r\n    \/\/\/ <summary>\r\n    \/\/\/ N\u00famero de sufijo para la segmentaci\u00f3n de brocas de ranura.\r\n    \/\/\/ <\/summary>\r\n    public int SlotEndNumber { get; set; } = 0;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Valor de compensaci\u00f3n adicional para la longitud de la ranura (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public double SlotLengthUp { get; set; } = 0;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Si se redondea la longitud de la ranura al intervalo de pasos.\r\n    \/\/\/ <\/summary>\r\n    public bool isSlotUpLevel { get; set; } = false;\r\n}\r\n\r\npublic class gToolUpParamHole\r\n{\r\n    \/\/\/ <summary>\r\n    \/\/\/ Valor de compensaci\u00f3n (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public double UpVal { get; set; } = 100;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Umbral del intervalo de paso para el redondeo al alza (en \u03bcm).\r\n    \/\/\/ <\/summary>\r\n    public double NivelSubida { get; set; } = 25;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Tolerancia superior (en \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double Max_Tol { get; set; } = 76;\r\n    \/\/\/ <summary>\r\n    \/\/\/ Tolerancia inferior (en \u03bcm)\r\n    \/\/\/ <\/summary>\r\n    public double Min_Tol { get; set; } = 76;\r\n}\r\n\r\n\/\/\/<summary>\r\n\/\/\/ Mod_tool: Modelo de atributos de la herramienta de perforaci\u00f3n.\r\n\/\/\/<\/summary>\r\npublic class Mod_tool\r\n{\r\n    public int num { get; set; }\r\n    public string tipo { get; set; } \/\/ Tipo de agujero: via\/plate(nplate)\r\n    public string forma { get; set; } \/\/ Forma del orificio: redondo\/ranura\r\n    public double tama\u00f1o_acabado { get; set; } \/\/ Tama\u00f1o del orificio acabado (en \u03bcm)\r\n    public double drill_size { get; set; } \/\/ Tama\u00f1o de la broca (en \u03bcm)\r\n    public double max_tol { get; set; } \/\/ Tolerancia superior (en \u03bcm)\r\n    public double min_tol { get; set; } \/\/ Tolerancia inferior (en \u03bcm)\r\n    public double slot_len { get; set; } \/\/ Longitud de la ranura (en \u03bcm)\r\n    public string bit { get; set; } \/\/ Tama\u00f1o de la broca (en mm, cadena formateada).\r\n}\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-578eb26 elementor-widget elementor-widget-text-editor\" data-id=\"578eb26\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2 data-start=\"10960\" data-end=\"11017\">6. \u00bfPor qu\u00e9 afecta el grosor del tablero a la compensaci\u00f3n de perforaci\u00f3n?<\/h2>\n<p data-start=\"11019\" data-end=\"11464\">Yo tampoco lo entend\u00eda al principio. La raz\u00f3n principal es el alto <strong data-start=\"11090\" data-end=\"11121\">relaci\u00f3n grosor\/di\u00e1metro<\/strong> (grosor de la placa dividido por el di\u00e1metro del agujero). Una relaci\u00f3n alta hace que el cobre en el centro del agujero sea m\u00e1s fino y el cobre en el borde del agujero m\u00e1s grueso. Para calcular la relaci\u00f3n grosor-di\u00e1metro se necesita el valor del grosor de la placa. Por tanto, el grosor de la placa entra en las reglas de compensaci\u00f3n del taladro. Para agujeros de gran grosor, la compensaci\u00f3n es mayor.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for [&hellip;]<\/p>","protected":false},"author":1,"featured_media":4584,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4575","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"spectra_custom_meta":{"_edit_lock":["1766131812:1"],"rank_math_internal_links_processed":["1"],"rank_math_seo_score":["15"],"_uag_custom_page_level_css":[""],"site-sidebar-layout":["default"],"site-content-layout":[""],"ast-site-content-layout":["default"],"site-content-style":["default"],"site-sidebar-style":["default"],"ast-global-header-display":[""],"ast-banner-title-visibility":[""],"ast-main-header-display":[""],"ast-hfb-above-header-display":[""],"ast-hfb-below-header-display":[""],"ast-hfb-mobile-header-display":[""],"ast-breadcrumbs-content":[""],"ast-featured-img":[""],"footer-sml-layout":[""],"theme-transparent-header-meta":[""],"adv-header-id-meta":[""],"stick-header-meta":[""],"header-above-stick-meta":[""],"header-main-stick-meta":[""],"header-below-stick-meta":[""],"astra-migrate-meta-layouts":["default"],"ast-page-background-enabled":["default"],"ast-page-background-meta":["a:3:{s:7:\"desktop\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-5)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"tablet\";a:12:{s:16:\"background-color\";s:0:\"\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"mobile\";a:12:{s:16:\"background-color\";s:0:\"\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}}"],"ast-content-background-meta":["a:3:{s:7:\"desktop\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"tablet\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}s:6:\"mobile\";a:12:{s:16:\"background-color\";s:25:\"var(--ast-global-color-4)\";s:16:\"background-image\";s:0:\"\";s:17:\"background-repeat\";s:6:\"repeat\";s:19:\"background-position\";s:13:\"center center\";s:15:\"background-size\";s:4:\"auto\";s:21:\"background-attachment\";s:6:\"scroll\";s:15:\"background-type\";s:0:\"\";s:16:\"background-media\";s:0:\"\";s:12:\"overlay-type\";s:0:\"\";s:13:\"overlay-color\";s:0:\"\";s:15:\"overlay-opacity\";s:0:\"\";s:16:\"overlay-gradient\";s:0:\"\";}}"],"footnotes":[""],"_elementor_edit_mode":["builder"],"_elementor_template_type":["wp-post"],"_elementor_data":["[{\"id\":\"733c0b06\",\"elType\":\"container\",\"settings\":{\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"7b990e0\"}]},\"elements\":[{\"id\":\"6269846d\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<p data-start=\\\"49\\\" data-end=\\\"461\\\">There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for <strong data-start=\\\"178\\\" data-end=\\\"194\\\">net handling<\\\/strong> and <strong data-start=\\\"199\\\" data-end=\\\"217\\\">drill handling<\\\/strong> is done. Next, we can move on to the PCB rules engine. Here I talk about drill compensation in PCB engineering. As a PCB engineering developer, you should know what it is and why it works. I share the key points about drill compensation below.<\\\/p>\\n<hr data-start=\\\"463\\\" data-end=\\\"466\\\" \\\/>\\n<h2 data-start=\\\"468\\\" data-end=\\\"507\\\">1. Why do we compensate drill sizes?<\\\/h2>\\n<p data-start=\\\"509\\\" data-end=\\\"870\\\">The hole sizes in the PCB files the customer gives usually mean the <em data-start=\\\"577\\\" data-end=\\\"584\\\">final<\\\/em> hole size. During PCB production, copper is plated inside the holes (or the holes get a surface finish such as HASL, ENIG, OSP, etc.). This makes the hole smaller. To make sure the final hole size meets the requirement, the CAM step corrects the drill size. This is drill compensation.<\\\/p>\\n<p data-start=\\\"872\\\" data-end=\\\"1171\\\"><strong data-start=\\\"872\\\" data-end=\\\"889\\\">Real example:<\\\/strong><br data-start=\\\"889\\\" data-end=\\\"892\\\" \\\/>Final hole size: <strong data-start=\\\"909\\\" data-end=\\\"920\\\">1.00 mm<\\\/strong>. Surface finish: <strong data-start=\\\"938\\\" data-end=\\\"946\\\">ENIG<\\\/strong> (nickel thickness 2.54 \\u00b5m, gold thickness 0.0254 \\u00b5m). Follow IPC Class II and the average plated copper thickness is <strong data-start=\\\"1064\\\" data-end=\\\"1073\\\">20 \\u00b5m<\\\/strong>. If we use <strong data-start=\\\"1085\\\" data-end=\\\"1096\\\">0.10 mm<\\\/strong> as the compensation value, the CAM team will pick a <strong data-start=\\\"1149\\\" data-end=\\\"1160\\\">1.10 mm<\\\/strong> drill bit.<\\\/p>\\n<p data-start=\\\"872\\\" data-end=\\\"1171\\\"><img class=\\\"alignnone size-full wp-image-4578\\\" src=\\\"https:\\\/\\\/flj-pcb.com\\\/wp-content\\\/uploads\\\/2025\\\/12\\\/Real-example.webp\\\" alt=\\\"Real example\\\" width=\\\"336\\\" height=\\\"297\\\" \\\/><\\\/p>\\n<hr data-start=\\\"1173\\\" data-end=\\\"1176\\\" \\\/>\\n<h2 data-start=\\\"1178\\\" data-end=\\\"1216\\\">2. How do we do drill compensation?<\\\/h2>\\n<p data-start=\\\"1218\\\" data-end=\\\"1445\\\">First, be clear about the three key parameters for drill compensation:<br data-start=\\\"1288\\\" data-end=\\\"1291\\\" \\\/><strong data-start=\\\"1291\\\" data-end=\\\"1298\\\">(1)<\\\/strong> Drill bit increment,<br data-start=\\\"1319\\\" data-end=\\\"1322\\\" \\\/><strong data-start=\\\"1322\\\" data-end=\\\"1329\\\">(2)<\\\/strong> Compensation value,<br data-start=\\\"1349\\\" data-end=\\\"1352\\\" \\\/><strong data-start=\\\"1352\\\" data-end=\\\"1359\\\">(3)<\\\/strong> Step-up threshold (advance value).<br data-start=\\\"1394\\\" data-end=\\\"1397\\\" \\\/>These three determine how to apply compensation.<\\\/p>\\n<h3 data-start=\\\"1447\\\" data-end=\\\"1475\\\">1) Drill bit increment<\\\/h3>\\n<p data-start=\\\"1476\\\" data-end=\\\"1773\\\">This depends on the drill bits the company buys. The industry common increment is <strong data-start=\\\"1558\\\" data-end=\\\"1567\\\">50 \\u00b5m<\\\/strong>. Typical drill sizes range from <strong data-start=\\\"1600\\\" data-end=\\\"1611\\\">0.10 mm<\\\/strong> to <strong data-start=\\\"1615\\\" data-end=\\\"1626\\\">6.35 mm<\\\/strong>. The usual smallest step between drill bits is <strong data-start=\\\"1674\\\" data-end=\\\"1685\\\">0.05 mm<\\\/strong>. So the drill library has sizes like <strong data-start=\\\"1723\\\" data-end=\\\"1761\\\">0.10 mm, 0.15 mm, 0.20 mm, 0.25 mm<\\\/strong>, and so on.<\\\/p>\\n<h3 data-start=\\\"1775\\\" data-end=\\\"1802\\\">2) Compensation value<\\\/h3>\\n<p data-start=\\\"1803\\\" data-end=\\\"1952\\\">The process team sets the compensation rules based on factory test results. Compensation values do not vary much across the industry. Common rules:<\\\/p>\\n<ul data-start=\\\"1953\\\" data-end=\\\"2098\\\">\\n<li data-start=\\\"1953\\\" data-end=\\\"2014\\\">\\n<p data-start=\\\"1955\\\" data-end=\\\"2014\\\"><strong data-start=\\\"1955\\\" data-end=\\\"1975\\\">Boards with HASL<\\\/strong> (spray tin): <strong data-start=\\\"1989\\\" data-end=\\\"2011\\\">compensate 0.15 mm<\\\/strong>.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"2015\\\" data-end=\\\"2098\\\">\\n<p data-start=\\\"2017\\\" data-end=\\\"2098\\\"><strong data-start=\\\"2017\\\" data-end=\\\"2040\\\">Boards without HASL<\\\/strong> (ENIG, immersion tin, OSP, etc.): <strong data-start=\\\"2075\\\" data-end=\\\"2097\\\">compensate 0.10 mm<\\\/strong>.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"2100\\\" data-end=\\\"2142\\\">3) Step-up threshold (advance value)<\\\/h3>\\n<p data-start=\\\"2143\\\" data-end=\\\"2403\\\">The process team also sets the strategy for picking the drill bit, similar to a rounding rule. For example, when the increment is <strong data-start=\\\"2273\\\" data-end=\\\"2282\\\">20 \\u00b5m<\\\/strong>, if the remainder after dividing by the increment is <strong data-start=\\\"2336\\\" data-end=\\\"2347\\\">\\u2265 20 \\u00b5m<\\\/strong>, you round up 50 \\u00b5m; otherwise you keep the lower size.<\\\/p>\\n<p data-start=\\\"2405\\\" data-end=\\\"2737\\\"><strong data-start=\\\"2405\\\" data-end=\\\"2417\\\">Example:<\\\/strong><br data-start=\\\"2417\\\" data-end=\\\"2420\\\" \\\/>Final hole size = <strong data-start=\\\"2438\\\" data-end=\\\"2450\\\">1.025 mm<\\\/strong>, compensation = <strong data-start=\\\"2467\\\" data-end=\\\"2478\\\">0.10 mm<\\\/strong>, so compensated size = <strong data-start=\\\"2502\\\" data-end=\\\"2514\\\">1.125 mm<\\\/strong>. But there is no <strong data-start=\\\"2532\\\" data-end=\\\"2544\\\">1.125 mm<\\\/strong> drill in the library. Use the step-up rule. The remainder of 1.125 mm when compared to the 0.05 mm step is <strong data-start=\\\"2652\\\" data-end=\\\"2661\\\">25 \\u00b5m<\\\/strong>. Since <strong data-start=\\\"2669\\\" data-end=\\\"2686\\\">25 \\u00b5m &gt; 20 \\u00b5m<\\\/strong>, round up by 50 \\u00b5m and choose a <strong data-start=\\\"2719\\\" data-end=\\\"2730\\\">1.15 mm<\\\/strong> drill.<\\\/p>\\n<hr data-start=\\\"2739\\\" data-end=\\\"2742\\\" \\\/>\\n<h3 data-start=\\\"2744\\\" data-end=\\\"2782\\\">Actual drill compensation examples<\\\/h3>\\n<p data-start=\\\"2784\\\" data-end=\\\"2850\\\">Assume: drill increment = <strong data-start=\\\"2810\\\" data-end=\\\"2819\\\">50 \\u00b5m<\\\/strong>, step-up threshold = <strong data-start=\\\"2841\\\" data-end=\\\"2850\\\">20 \\u00b5m<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"2852\\\" data-end=\\\"3097\\\">\\n<thead data-start=\\\"2852\\\" data-end=\\\"2947\\\">\\n<tr data-start=\\\"2852\\\" data-end=\\\"2947\\\">\\n<th data-start=\\\"2852\\\" data-end=\\\"2868\\\" data-col-size=\\\"sm\\\">Original hole<\\\/th>\\n<th data-start=\\\"2868\\\" data-end=\\\"2883\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"2883\\\" data-end=\\\"2904\\\" data-col-size=\\\"sm\\\">After compensation<\\\/th>\\n<th data-start=\\\"2904\\\" data-end=\\\"2919\\\" data-col-size=\\\"sm\\\">Integer part<\\\/th>\\n<th data-start=\\\"2919\\\" data-end=\\\"2931\\\" data-col-size=\\\"sm\\\">Remainder<\\\/th>\\n<th data-start=\\\"2931\\\" data-end=\\\"2947\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"2980\\\" data-end=\\\"3097\\\">\\n<tr data-start=\\\"2980\\\" data-end=\\\"3038\\\">\\n<td data-start=\\\"2980\\\" data-end=\\\"2991\\\" data-col-size=\\\"sm\\\">1.025 mm<\\\/td>\\n<td data-start=\\\"2991\\\" data-end=\\\"2998\\\" data-col-size=\\\"sm\\\">0.10<\\\/td>\\n<td data-start=\\\"2998\\\" data-end=\\\"3009\\\" data-col-size=\\\"sm\\\">1.125 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3009\\\" data-end=\\\"3016\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3016\\\" data-end=\\\"3027\\\">0.025 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3027\\\" data-end=\\\"3038\\\">1.15 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"3039\\\" data-end=\\\"3097\\\">\\n<td data-start=\\\"3039\\\" data-end=\\\"3050\\\" data-col-size=\\\"sm\\\">1.016 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3050\\\" data-end=\\\"3057\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3057\\\" data-end=\\\"3068\\\">1.116 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3068\\\" data-end=\\\"3075\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3075\\\" data-end=\\\"3086\\\">0.016 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"3086\\\" data-end=\\\"3097\\\">1.10 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<h4 data-start=\\\"3099\\\" data-end=\\\"3140\\\">How to compute the chosen drill size<\\\/h4>\\n<p data-start=\\\"3141\\\" data-end=\\\"3241\\\">Break the compensated hole size into an integer part and a remainder part using the drill increment:<\\\/p>\\n<p data-start=\\\"3243\\\" data-end=\\\"3396\\\">Take <strong data-start=\\\"3248\\\" data-end=\\\"3260\\\">1.125 mm<\\\/strong> as an example:<br data-start=\\\"3275\\\" data-end=\\\"3278\\\" \\\/>1.125 \\\/ 0.05 = 22.5 \\u2192 floor to 22 \\u2192 integer part = 22 \\u00d7 0.05 = <strong data-start=\\\"3341\\\" data-end=\\\"3352\\\">1.10 mm<\\\/strong>.<br data-start=\\\"3353\\\" data-end=\\\"3356\\\" \\\/>Remainder = 1.125 % 0.05 = <strong data-start=\\\"3383\\\" data-end=\\\"3395\\\">0.025 mm<\\\/strong>.<\\\/p>\\n<p data-start=\\\"3398\\\" data-end=\\\"3475\\\">Then compare the remainder with the step-up threshold (for example, 20 \\u00b5m):<\\\/p>\\n<ul data-start=\\\"3476\\\" data-end=\\\"3607\\\">\\n<li data-start=\\\"3476\\\" data-end=\\\"3542\\\">\\n<p data-start=\\\"3478\\\" data-end=\\\"3542\\\">If remainder &gt; threshold, drill size = integer part + 0.05 mm.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"3543\\\" data-end=\\\"3607\\\">\\n<p data-start=\\\"3545\\\" data-end=\\\"3607\\\">If remainder \\u2264 threshold, drill size = integer part + 0.00 mm.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<hr data-start=\\\"3609\\\" data-end=\\\"3612\\\" \\\/>\\n<h3 data-start=\\\"3614\\\" data-end=\\\"3653\\\">Summary about the step-up threshold<\\\/h3>\\n<p data-start=\\\"3654\\\" data-end=\\\"3897\\\">When the drill increment is <strong data-start=\\\"3682\\\" data-end=\\\"3691\\\">50 \\u00b5m<\\\/strong>, the step-up threshold is critical. It performs a second correction of the compensated drill size. It decides whether to \\u201cstep up\\u201d or \\u201cstay.\\u201d Changing this threshold directly changes the chosen drill size.<\\\/p>\\n<p data-start=\\\"3899\\\" data-end=\\\"3943\\\"><strong data-start=\\\"3899\\\" data-end=\\\"3943\\\">More examples (drill increment = 50 \\u00b5m):<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"3945\\\" data-end=\\\"4209\\\">\\n<thead data-start=\\\"3945\\\" data-end=\\\"4041\\\">\\n<tr data-start=\\\"3945\\\" data-end=\\\"4041\\\">\\n<th data-start=\\\"3945\\\" data-end=\\\"3961\\\" data-col-size=\\\"sm\\\">Original hole<\\\/th>\\n<th data-start=\\\"3961\\\" data-end=\\\"3976\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"3976\\\" data-end=\\\"3990\\\" data-col-size=\\\"sm\\\">After comp.<\\\/th>\\n<th data-start=\\\"3990\\\" data-end=\\\"4000\\\" data-col-size=\\\"sm\\\">Integer<\\\/th>\\n<th data-start=\\\"4000\\\" data-end=\\\"4012\\\" data-col-size=\\\"sm\\\">Remainder<\\\/th>\\n<th data-start=\\\"4012\\\" data-end=\\\"4032\\\" data-col-size=\\\"sm\\\">Step-up threshold<\\\/th>\\n<th data-start=\\\"4032\\\" data-end=\\\"4041\\\" data-col-size=\\\"sm\\\">Drill<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"4079\\\" data-end=\\\"4209\\\">\\n<tr data-start=\\\"4079\\\" data-end=\\\"4143\\\">\\n<td data-start=\\\"4079\\\" data-end=\\\"4090\\\" data-col-size=\\\"sm\\\">1.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4090\\\" data-end=\\\"4096\\\">0.1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4096\\\" data-end=\\\"4107\\\">1.122 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4107\\\" data-end=\\\"4114\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4114\\\" data-end=\\\"4125\\\">0.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4125\\\" data-end=\\\"4132\\\">0.02<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4132\\\" data-end=\\\"4143\\\">1.15 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"4144\\\" data-end=\\\"4209\\\">\\n<td data-start=\\\"4144\\\" data-end=\\\"4155\\\" data-col-size=\\\"sm\\\">1.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4155\\\" data-end=\\\"4161\\\">0.1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4161\\\" data-end=\\\"4172\\\">1.122 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4172\\\" data-end=\\\"4179\\\">1.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4179\\\" data-end=\\\"4190\\\">0.022 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4190\\\" data-end=\\\"4198\\\">0.025<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"4198\\\" data-end=\\\"4209\\\">1.10 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<hr data-start=\\\"4211\\\" data-end=\\\"4214\\\" \\\/>\\n<h3 data-start=\\\"4216\\\" data-end=\\\"4266\\\">Personal view on setting the step-up threshold<\\\/h3>\\n<p data-start=\\\"4267\\\" data-end=\\\"4575\\\"><strong data-start=\\\"4267\\\" data-end=\\\"4285\\\">Pros and cons:<\\\/strong> After compensation, if the final hole is a little larger, at least the part can be inserted. If the hole is too small, the part cannot be inserted. So we usually set the step-up threshold to <strong data-start=\\\"4477\\\" data-end=\\\"4486\\\">20 \\u00b5m<\\\/strong> instead of <strong data-start=\\\"4498\\\" data-end=\\\"4507\\\">25 \\u00b5m<\\\/strong>. The exact choice should match each process and compensation value.<\\\/p>\\n<p data-start=\\\"4577\\\" data-end=\\\"4862\\\"><strong data-start=\\\"4577\\\" data-end=\\\"4614\\\">Combined with compensation value:<\\\/strong> For boards with HASL where compensation is <strong data-start=\\\"4658\\\" data-end=\\\"4669\\\">0.15 mm<\\\/strong>, you already \\u201cover-compensate\\u201d a bit and the final holes tend to be slightly large. In that case, a step-up threshold of <strong data-start=\\\"4791\\\" data-end=\\\"4800\\\">25 \\u00b5m<\\\/strong> can also work. Use the \\u201cnearest\\u201d rule when picking the drill.<\\\/p>\\n<hr data-start=\\\"4864\\\" data-end=\\\"4867\\\" \\\/>\\n<h2 data-start=\\\"4869\\\" data-end=\\\"4943\\\">3. How to ensure final hole size meets requirements after compensation?<\\\/h2>\\n<h3 data-start=\\\"4945\\\" data-end=\\\"4983\\\">Method 1: Buy special drill bits<\\\/h3>\\n<p data-start=\\\"4984\\\" data-end=\\\"5207\\\">Standard drill increment is <strong data-start=\\\"5012\\\" data-end=\\\"5021\\\">50 \\u00b5m<\\\/strong> (0.05 mm steps like 1.00, 1.05, 1.10, 1.15 mm). With a PTH tolerance of \\u00b13 mil, a 50 \\u00b5m drill set can cover the tolerance. If the tolerance is smaller than that, use special drill bits.<\\\/p>\\n<p data-start=\\\"5209\\\" data-end=\\\"5352\\\"><strong data-start=\\\"5209\\\" data-end=\\\"5222\\\">Example 1<\\\/strong> \\u2014 Compare 50 \\u00b5m vs 25 \\u00b5m increments:<br data-start=\\\"5259\\\" data-end=\\\"5262\\\" \\\/>Original hole = <strong data-start=\\\"5278\\\" data-end=\\\"5290\\\">0.922 mm<\\\/strong>, compensation = <strong data-start=\\\"5307\\\" data-end=\\\"5318\\\">0.10 mm<\\\/strong>, compensated size = <strong data-start=\\\"5339\\\" data-end=\\\"5351\\\">1.022 mm<\\\/strong>.<\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"5354\\\" data-end=\\\"5545\\\">\\n<thead data-start=\\\"5354\\\" data-end=\\\"5422\\\">\\n<tr data-start=\\\"5354\\\" data-end=\\\"5422\\\">\\n<th data-start=\\\"5354\\\" data-end=\\\"5365\\\" data-col-size=\\\"sm\\\">Original<\\\/th>\\n<th data-start=\\\"5365\\\" data-end=\\\"5380\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"5380\\\" data-end=\\\"5394\\\" data-col-size=\\\"sm\\\">Compensated<\\\/th>\\n<th data-start=\\\"5394\\\" data-end=\\\"5406\\\" data-col-size=\\\"sm\\\">Increment<\\\/th>\\n<th data-start=\\\"5406\\\" data-end=\\\"5422\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"5450\\\" data-end=\\\"5545\\\">\\n<tr data-start=\\\"5450\\\" data-end=\\\"5496\\\">\\n<td data-start=\\\"5450\\\" data-end=\\\"5458\\\" data-col-size=\\\"sm\\\">0.922<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5458\\\" data-end=\\\"5465\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5465\\\" data-end=\\\"5473\\\">1.022<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5473\\\" data-end=\\\"5488\\\">0.05 (50 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5488\\\" data-end=\\\"5496\\\">1.05<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"5497\\\" data-end=\\\"5545\\\">\\n<td data-start=\\\"5497\\\" data-end=\\\"5505\\\" data-col-size=\\\"sm\\\">0.922<\\\/td>\\n<td data-start=\\\"5505\\\" data-end=\\\"5512\\\" data-col-size=\\\"sm\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5512\\\" data-end=\\\"5520\\\">1.022<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5520\\\" data-end=\\\"5536\\\">0.025 (25 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5536\\\" data-end=\\\"5545\\\">1.025<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"5547\\\" data-end=\\\"5689\\\">Difference: 1.050 \\u2212 1.022 = 0.028 mm; 1.025 \\u2212 1.022 = 0.003 mm. The smaller difference is better, so <strong data-start=\\\"5648\\\" data-end=\\\"5660\\\">1.025 mm<\\\/strong> (25 \\u00b5m increment) is better.<\\\/p>\\n<p data-start=\\\"5691\\\" data-end=\\\"5818\\\"><strong data-start=\\\"5691\\\" data-end=\\\"5704\\\">Example 2<\\\/strong> \\u2014 50 \\u00b5m vs special drill:<br data-start=\\\"5730\\\" data-end=\\\"5733\\\" \\\/>Original hole = <strong data-start=\\\"5749\\\" data-end=\\\"5761\\\">0.611 mm<\\\/strong>, compensation = <strong data-start=\\\"5778\\\" data-end=\\\"5789\\\">0.10 mm<\\\/strong>, compensated = <strong data-start=\\\"5805\\\" data-end=\\\"5817\\\">0.711 mm<\\\/strong>.<\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"5820\\\" data-end=\\\"6018\\\">\\n<thead data-start=\\\"5820\\\" data-end=\\\"5895\\\">\\n<tr data-start=\\\"5820\\\" data-end=\\\"5895\\\">\\n<th data-start=\\\"5820\\\" data-end=\\\"5831\\\" data-col-size=\\\"sm\\\">Original<\\\/th>\\n<th data-start=\\\"5831\\\" data-end=\\\"5846\\\" data-col-size=\\\"sm\\\">Compensation<\\\/th>\\n<th data-start=\\\"5846\\\" data-end=\\\"5860\\\" data-col-size=\\\"sm\\\">Compensated<\\\/th>\\n<th data-start=\\\"5860\\\" data-end=\\\"5879\\\" data-col-size=\\\"sm\\\">Increment \\\/ Type<\\\/th>\\n<th data-start=\\\"5879\\\" data-end=\\\"5895\\\" data-col-size=\\\"sm\\\">Drill chosen<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"5923\\\" data-end=\\\"6018\\\">\\n<tr data-start=\\\"5923\\\" data-end=\\\"5969\\\">\\n<td data-start=\\\"5923\\\" data-end=\\\"5931\\\" data-col-size=\\\"sm\\\">0.611<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5931\\\" data-end=\\\"5938\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5938\\\" data-end=\\\"5946\\\">0.711<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5946\\\" data-end=\\\"5961\\\">0.05 (50 \\u00b5m)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5961\\\" data-end=\\\"5969\\\">0.70<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"5970\\\" data-end=\\\"6018\\\">\\n<td data-start=\\\"5970\\\" data-end=\\\"5978\\\" data-col-size=\\\"sm\\\">0.611<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5978\\\" data-end=\\\"5985\\\">0.10<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5985\\\" data-end=\\\"5993\\\">0.711<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"5993\\\" data-end=\\\"6009\\\">Special drill<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"6009\\\" data-end=\\\"6018\\\">0.711<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"6020\\\" data-end=\\\"6161\\\">Difference: 0.700 \\u2212 0.711 = \\u22120.011 mm; 0.711 \\u2212 0.711 = 0.000 mm. The smaller difference is better. So the <strong data-start=\\\"6126\\\" data-end=\\\"6152\\\">0.711 mm special drill<\\\/strong> is best.<\\\/p>\\n<h3 data-start=\\\"6163\\\" data-end=\\\"6206\\\">Method 2: Improve process and equipment<\\\/h3>\\n<ul data-start=\\\"6207\\\" data-end=\\\"6752\\\">\\n<li data-start=\\\"6207\\\" data-end=\\\"6296\\\">\\n<p data-start=\\\"6209\\\" data-end=\\\"6296\\\">Add a second board plating step to reduce uneven thickness from pattern distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6297\\\" data-end=\\\"6395\\\">\\n<p data-start=\\\"6299\\\" data-end=\\\"6395\\\">Use negative photo direct-etching and plate the whole board to reduce uneven copper thickness.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6396\\\" data-end=\\\"6538\\\">\\n<p data-start=\\\"6398\\\" data-end=\\\"6538\\\">Lower the current density (typical is 19 ASF); slightly lower current density can improve plating uniformity but will extend plating time.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"6539\\\" data-end=\\\"6752\\\">\\n<p data-start=\\\"6541\\\" data-end=\\\"6752\\\">Upgrade to a horizontal plating line. Vertical plating lines often give thicker copper at the hole edge and thinner copper at the hole center for high aspect-ratio holes. A horizontal line can reduce that issue.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"6754\\\" data-end=\\\"6790\\\">Method 3: Improve CAM strategies<\\\/h3>\\n<ul data-start=\\\"6791\\\" data-end=\\\"7885\\\">\\n<li data-start=\\\"6791\\\" data-end=\\\"7019\\\">\\n<p data-start=\\\"6793\\\" data-end=\\\"7019\\\">For holes in isolated copper areas, apply one extra increment compensation. Isolated areas have less copper, so during plating they get higher local current density and more copper thickness; extra compensation offsets that.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7020\\\" data-end=\\\"7361\\\">\\n<p data-start=\\\"7022\\\" data-end=\\\"7361\\\">For designs with dense traces on one side and sparse on the other (for example, a power board), place the sparse side inward and the dense side outward, and use reversed panelization. During panel plating, areas near the board edge get higher current density and thicker plating. Reversed panelization helps balance plating distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7362\\\" data-end=\\\"7617\\\">\\n<p data-start=\\\"7364\\\" data-end=\\\"7617\\\">When TOP and BOTTOM copper area differ a lot, use positive\\\/negative (yin-yang) paneling. Uneven copper area causes \\u201cbell-mouth\\u201d vias; the thicker the board and the more copper, the worse the effect; yin-yang paneling helps balance copper distribution.<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"7618\\\" data-end=\\\"7885\\\">\\n<p data-start=\\\"7620\\\" data-end=\\\"7885\\\">For isolated-area holes near the board edge or slots, add copper \\u201cpick-up\\u201d areas or copper pads near the edge or slot. Isolated holes can get too much plating thickness and become too small; extra copper near them reduces local current density and balances plating.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<hr data-start=\\\"7887\\\" data-end=\\\"7890\\\" \\\/>\\n<h2 data-start=\\\"7892\\\" data-end=\\\"7952\\\">4. How much compensation is needed and how is it derived?<\\\/h2>\\n<p data-start=\\\"7954\\\" data-end=\\\"8087\\\">Compensation values come from process tests. Below is one set of measured hole size changes after various steps (data from a report):<\\\/p>\\n<p data-start=\\\"8089\\\" data-end=\\\"8212\\\"><strong data-start=\\\"8089\\\" data-end=\\\"8106\\\">Process flow:<\\\/strong> mechanical drilling \\u2192 immersion copper \\u2192 electroplating \\u2192 pattern transfer \\u2192 etch \\u2192 AOI \\u2192 wet film \\u2192 HASL<\\\/p>\\n<p data-start=\\\"8214\\\" data-end=\\\"8239\\\"><strong data-start=\\\"8214\\\" data-end=\\\"8237\\\">Process parameters:<\\\/strong><\\\/p>\\n<ul data-start=\\\"8240\\\" data-end=\\\"8515\\\">\\n<li data-start=\\\"8240\\\" data-end=\\\"8330\\\">\\n<p data-start=\\\"8242\\\" data-end=\\\"8330\\\">Drill: drill bit size 0.95 mm, re-sharpen\\\/regrind 3 times, drill compensation 0.15 mm;<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8331\\\" data-end=\\\"8386\\\">\\n<p data-start=\\\"8333\\\" data-end=\\\"8386\\\">Plating: copper thickness \\u2265 18 \\u00b5m, average \\u2265 20 \\u00b5m;<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8387\\\" data-end=\\\"8456\\\">\\n<p data-start=\\\"8389\\\" data-end=\\\"8456\\\">HASL: final hole requirement 0.80 mm, tolerance \\u00b10.08 mm (3 mil);<\\\/p>\\n<\\\/li>\\n<li data-start=\\\"8457\\\" data-end=\\\"8515\\\">\\n<p data-start=\\\"8459\\\" data-end=\\\"8515\\\">Test: 10 panels, corner trimmed, board thickness 2.0 mm.<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<h3 data-start=\\\"8517\\\" data-end=\\\"8546\\\">Hole size changes by step<\\\/h3>\\n<p data-start=\\\"8548\\\" data-end=\\\"8593\\\"><strong data-start=\\\"8548\\\" data-end=\\\"8569\\\">1) After drilling<\\\/strong> \\u2014 hole sizes measured<\\\/p>\\n<ul data-start=\\\"8594\\\" data-end=\\\"8795\\\">\\n<li data-start=\\\"8594\\\" data-end=\\\"8795\\\">\\n<p data-start=\\\"8596\\\" data-end=\\\"8795\\\">Total 1920 holes tested (10 panels, 384 holes each). Sample: 200 holes (20 per panel). Hole range: <strong data-start=\\\"8695\\\" data-end=\\\"8711\\\">0.93\\u20130.94 mm<\\\/strong>, average <strong data-start=\\\"8721\\\" data-end=\\\"8733\\\">0.931 mm<\\\/strong>.<br data-start=\\\"8734\\\" data-end=\\\"8737\\\" \\\/>(Then a long list of sampled values, mostly 0.93 or 0.94.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"8797\\\" data-end=\\\"8848\\\"><strong data-start=\\\"8797\\\" data-end=\\\"8846\\\">2) After patterned plating \\u2014 copper thickness<\\\/strong><\\\/p>\\n<ul data-start=\\\"8849\\\" data-end=\\\"8999\\\">\\n<li data-start=\\\"8849\\\" data-end=\\\"8999\\\">\\n<p data-start=\\\"8851\\\" data-end=\\\"8999\\\">For each panel, test 10 holes. Copper thickness range <strong data-start=\\\"8905\\\" data-end=\\\"8917\\\">18\\u201331 \\u00b5m<\\\/strong>, meeting \\u226518 \\u00b5m and average \\u226520 \\u00b5m.<br data-start=\\\"8953\\\" data-end=\\\"8956\\\" \\\/>(Then many sample copper thickness values.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9001\\\" data-end=\\\"9045\\\"><strong data-start=\\\"9001\\\" data-end=\\\"9043\\\">3) After patterned plating \\u2014 hole size<\\\/strong><\\\/p>\\n<ul data-start=\\\"9046\\\" data-end=\\\"9176\\\">\\n<li data-start=\\\"9046\\\" data-end=\\\"9176\\\">\\n<p data-start=\\\"9048\\\" data-end=\\\"9176\\\">Total 1920 holes, sample 200. Hole range: <strong data-start=\\\"9090\\\" data-end=\\\"9106\\\">0.84\\u20130.88 mm<\\\/strong>, average <strong data-start=\\\"9116\\\" data-end=\\\"9128\\\">0.858 mm<\\\/strong>.<br data-start=\\\"9129\\\" data-end=\\\"9132\\\" \\\/>(Then many sample values, mostly 0.85\\u20130.88.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9178\\\" data-end=\\\"9209\\\"><strong data-start=\\\"9178\\\" data-end=\\\"9195\\\">4) After HASL<\\\/strong> \\u2014 hole size<\\\/p>\\n<ul data-start=\\\"9210\\\" data-end=\\\"9322\\\">\\n<li data-start=\\\"9210\\\" data-end=\\\"9322\\\">\\n<p data-start=\\\"9212\\\" data-end=\\\"9322\\\">Total 1920 holes, sample 200. Hole range: <strong data-start=\\\"9254\\\" data-end=\\\"9270\\\">0.82\\u20130.86 mm<\\\/strong>, average <strong data-start=\\\"9280\\\" data-end=\\\"9292\\\">0.836 mm<\\\/strong>.<br data-start=\\\"9293\\\" data-end=\\\"9296\\\" \\\/>(Then many sample values.)<\\\/p>\\n<\\\/li>\\n<\\\/ul>\\n<p data-start=\\\"9324\\\" data-end=\\\"9340\\\"><strong data-start=\\\"9324\\\" data-end=\\\"9340\\\">Test summary<\\\/strong><\\\/p>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"9342\\\" data-end=\\\"9531\\\">\\n<thead data-start=\\\"9342\\\" data-end=\\\"9378\\\">\\n<tr data-start=\\\"9342\\\" data-end=\\\"9378\\\">\\n<th data-start=\\\"9342\\\" data-end=\\\"9349\\\" data-col-size=\\\"sm\\\">Step<\\\/th>\\n<th data-start=\\\"9349\\\" data-end=\\\"9362\\\" data-col-size=\\\"sm\\\">Hole range<\\\/th>\\n<th data-start=\\\"9362\\\" data-end=\\\"9378\\\" data-col-size=\\\"sm\\\">Average hole<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"9395\\\" data-end=\\\"9531\\\">\\n<tr data-start=\\\"9395\\\" data-end=\\\"9439\\\">\\n<td data-start=\\\"9395\\\" data-end=\\\"9412\\\" data-col-size=\\\"sm\\\">After drilling<\\\/td>\\n<td data-start=\\\"9412\\\" data-end=\\\"9427\\\" data-col-size=\\\"sm\\\">0.93\\u20130.94 mm<\\\/td>\\n<td data-start=\\\"9427\\\" data-end=\\\"9439\\\" data-col-size=\\\"sm\\\">0.931 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"9440\\\" data-end=\\\"9490\\\">\\n<td data-start=\\\"9440\\\" data-end=\\\"9463\\\" data-col-size=\\\"sm\\\">After copper plating<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9463\\\" data-end=\\\"9478\\\">0.84\\u20130.88 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9478\\\" data-end=\\\"9490\\\">0.858 mm<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"9491\\\" data-end=\\\"9531\\\">\\n<td data-start=\\\"9491\\\" data-end=\\\"9504\\\" data-col-size=\\\"sm\\\">After HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9504\\\" data-end=\\\"9519\\\">0.82\\u20130.86 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"9519\\\" data-end=\\\"9531\\\">0.836 mm<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<p data-start=\\\"9533\\\" data-end=\\\"9723\\\"><strong data-start=\\\"9533\\\" data-end=\\\"9548\\\">Conclusion:<\\\/strong> For HASL boards the drill compensation of <strong data-start=\\\"9591\\\" data-end=\\\"9602\\\">0.15 mm<\\\/strong> is an \\u201cover-compensation\\u201d and causes final holes to be larger. The best compensation value in this test is <strong data-start=\\\"9710\\\" data-end=\\\"9722\\\">0.125 mm<\\\/strong>.<\\\/p>\\n<hr data-start=\\\"9725\\\" data-end=\\\"9728\\\" \\\/>\\n<h2>5. Drill compensation code implementation (rules)<\\\/h2>\\n<ol data-start=\\\"9784\\\" data-end=\\\"9817\\\">\\n<li data-start=\\\"9784\\\" data-end=\\\"9817\\\">\\n<p data-start=\\\"9787\\\" data-end=\\\"9817\\\">Compensation and step-up rules<\\\/p>\\n<\\\/li>\\n<\\\/ol>\\n<div class=\\\"TyagGW_tableContainer\\\">\\n<div class=\\\"group TyagGW_tableWrapper flex w-fit flex-col-reverse\\\" tabindex=\\\"-1\\\">\\n<table class=\\\"w-fit min-w-(--thread-content-width)\\\" data-start=\\\"9819\\\" data-end=\\\"10843\\\">\\n<thead data-start=\\\"9819\\\" data-end=\\\"9968\\\">\\n<tr data-start=\\\"9819\\\" data-end=\\\"9968\\\">\\n<th data-start=\\\"9819\\\" data-end=\\\"9828\\\" data-col-size=\\\"sm\\\">Aspect<\\\/th>\\n<th data-start=\\\"9828\\\" data-end=\\\"9844\\\" data-col-size=\\\"sm\\\">Finished hole<\\\/th>\\n<th data-start=\\\"9844\\\" data-end=\\\"9861\\\" data-col-size=\\\"sm\\\">Surface finish<\\\/th>\\n<th data-start=\\\"9861\\\" data-end=\\\"9879\\\" data-col-size=\\\"sm\\\">Board thickness<\\\/th>\\n<th data-start=\\\"9879\\\" data-end=\\\"9899\\\" data-col-size=\\\"sm\\\">Step-up threshold<\\\/th>\\n<th data-start=\\\"9899\\\" data-end=\\\"9923\\\" data-col-size=\\\"sm\\\">If via copper &lt; 26 \\u00b5m<\\\/th>\\n<th data-start=\\\"9923\\\" data-end=\\\"9934\\\" data-col-size=\\\"sm\\\">26\\u201337 \\u00b5m<\\\/th>\\n<th data-start=\\\"9934\\\" data-end=\\\"9945\\\" data-col-size=\\\"sm\\\">37\\u201347 \\u00b5m<\\\/th>\\n<th data-start=\\\"9945\\\" data-end=\\\"9956\\\" data-col-size=\\\"sm\\\">47\\u201367 \\u00b5m<\\\/th>\\n<th data-start=\\\"9956\\\" data-end=\\\"9968\\\" data-col-size=\\\"sm\\\">67\\u201386 \\u00b5m<\\\/th>\\n<\\\/tr>\\n<\\\/thead>\\n<tbody data-start=\\\"10018\\\" data-end=\\\"10843\\\">\\n<tr data-start=\\\"10018\\\" data-end=\\\"10146\\\">\\n<td data-start=\\\"10018\\\" data-end=\\\"10043\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-start=\\\"10043\\\" data-end=\\\"10055\\\" data-col-size=\\\"sm\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10055\\\" data-end=\\\"10084\\\">HASL (leaded or lead-free)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10084\\\" data-end=\\\"10095\\\">\\u2265 3.5 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10095\\\" data-end=\\\"10105\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10105\\\" data-end=\\\"10113\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10113\\\" data-end=\\\"10121\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10121\\\" data-end=\\\"10129\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10129\\\" data-end=\\\"10137\\\">8 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10137\\\" data-end=\\\"10146\\\">9 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10147\\\" data-end=\\\"10285\\\">\\n<td data-start=\\\"10147\\\" data-end=\\\"10172\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10172\\\" data-end=\\\"10184\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10184\\\" data-end=\\\"10213\\\">HASL (leaded or lead-free)<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10213\\\" data-end=\\\"10224\\\">&lt; 3.5 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10224\\\" data-end=\\\"10234\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10234\\\" data-end=\\\"10244\\\">4.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10244\\\" data-end=\\\"10254\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10254\\\" data-end=\\\"10264\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10264\\\" data-end=\\\"10274\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10274\\\" data-end=\\\"10285\\\">8.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10286\\\" data-end=\\\"10395\\\">\\n<td data-start=\\\"10286\\\" data-end=\\\"10311\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10311\\\" data-end=\\\"10323\\\">\\u2264 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10323\\\" data-end=\\\"10340\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10340\\\" data-end=\\\"10344\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10344\\\" data-end=\\\"10354\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10354\\\" data-end=\\\"10362\\\">4 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10362\\\" data-end=\\\"10370\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10370\\\" data-end=\\\"10378\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10378\\\" data-end=\\\"10386\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10386\\\" data-end=\\\"10395\\\">8 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10396\\\" data-end=\\\"10504\\\">\\n<td data-start=\\\"10396\\\" data-end=\\\"10421\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10421\\\" data-end=\\\"10433\\\">&gt; 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10433\\\" data-end=\\\"10440\\\">HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10440\\\" data-end=\\\"10444\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10444\\\" data-end=\\\"10453\\\">0.0246<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10453\\\" data-end=\\\"10463\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10463\\\" data-end=\\\"10473\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10473\\\" data-end=\\\"10483\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10483\\\" data-end=\\\"10493\\\">8.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10493\\\" data-end=\\\"10504\\\">9.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10505\\\" data-end=\\\"10624\\\">\\n<td data-start=\\\"10505\\\" data-end=\\\"10530\\\" data-col-size=\\\"sm\\\">thickness ratio &lt; 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10530\\\" data-end=\\\"10542\\\">&gt; 1.90 mm<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10542\\\" data-end=\\\"10559\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10559\\\" data-end=\\\"10563\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10563\\\" data-end=\\\"10573\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10573\\\" data-end=\\\"10583\\\">4.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10583\\\" data-end=\\\"10593\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10593\\\" data-end=\\\"10603\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10603\\\" data-end=\\\"10613\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10613\\\" data-end=\\\"10624\\\">8.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10625\\\" data-end=\\\"10733\\\">\\n<td data-start=\\\"10625\\\" data-end=\\\"10650\\\" data-col-size=\\\"sm\\\">thickness ratio \\u2265 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10650\\\" data-end=\\\"10662\\\">all holes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10662\\\" data-end=\\\"10669\\\">HASL<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10669\\\" data-end=\\\"10673\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10673\\\" data-end=\\\"10682\\\">0.0246<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10682\\\" data-end=\\\"10692\\\">5.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10692\\\" data-end=\\\"10702\\\">6.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10702\\\" data-end=\\\"10712\\\">7.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10712\\\" data-end=\\\"10722\\\">8.5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10722\\\" data-end=\\\"10733\\\">9.5 mil<\\\/td>\\n<\\\/tr>\\n<tr data-start=\\\"10734\\\" data-end=\\\"10843\\\">\\n<td data-start=\\\"10734\\\" data-end=\\\"10759\\\" data-col-size=\\\"sm\\\">thickness ratio \\u2265 12:1<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10759\\\" data-end=\\\"10771\\\">all holes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10771\\\" data-end=\\\"10788\\\">Other finishes<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10788\\\" data-end=\\\"10792\\\">\\\/<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10792\\\" data-end=\\\"10802\\\">0.01952<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10802\\\" data-end=\\\"10810\\\">5 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10810\\\" data-end=\\\"10818\\\">6 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10818\\\" data-end=\\\"10826\\\">7 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10826\\\" data-end=\\\"10834\\\">8 mil<\\\/td>\\n<td data-col-size=\\\"sm\\\" data-start=\\\"10834\\\" data-end=\\\"10843\\\">9 mil<\\\/td>\\n<\\\/tr>\\n<\\\/tbody>\\n<\\\/table>\\n<\\\/div>\\n<\\\/div>\\n<ol start=\\\"2\\\" data-start=\\\"10845\\\" data-end=\\\"10953\\\">\\n<li data-start=\\\"10845\\\" data-end=\\\"10953\\\">\\n<p data-start=\\\"10848\\\" data-end=\\\"10953\\\">Special drill sizes (if tolerance &lt; 3 mil, use special drills or 25 \\u00b5m increment, use nearest drill rule)<\\\/p>\\n<\\\/li>\\n<\\\/ol>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"a4fd860\"}]},\"elements\":[],\"widgetType\":\"text-editor\"},{\"id\":\"f7e142f\",\"elType\":\"widget\",\"settings\":{\"language\":\"aspnet\",\"code\":\"List<double> ContainDrillToolList = new List<double>();\\r\\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"e63c3e6\"}]},\"elements\":[],\"widgetType\":\"code-highlight\"},{\"id\":\"ec5424b\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<p>3. Drill Compensation Code<\\\/p>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"17c7393\"}]},\"elements\":[],\"widgetType\":\"text-editor\"},{\"id\":\"3dfeb51\",\"elType\":\"widget\",\"settings\":{\"language\":\"csharp\",\"code\":\"\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Calculate the drill bit diameter based on drill compensation parameters\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\n\\\/\\\/\\\/<param name=\\\"ToolInfo\\\">Drill tool basic information<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"UpParam\\\">Drill compensation parameters<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"ContainDrillToolList\\\">Special drill bit diameter list<\\\/param>\\r\\n\\\/\\\/\\\/<returns>Return 1 if calculation is successful<\\\/returns>\\r\\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List<double> ContainDrillToolList)\\r\\n{\\r\\n    if (ContainDrillToolList == null) ContainDrillToolList = new List<double>();\\r\\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\\r\\n    switch (ToolInfo.type)\\r\\n    {\\r\\n        case \\\"via\\\":\\r\\n            UpParamHole = UpParam.Via;\\r\\n            break;\\r\\n        case \\\"plate\\\":\\r\\n            UpParamHole = UpParam.Pth;\\r\\n            break;\\r\\n        case \\\"nplate\\\":\\r\\n            UpParamHole = UpParam.Npth;\\r\\n            break;\\r\\n    }\\r\\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\\r\\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\\r\\n    if (ToolInfo.finish_size < 50)\\r\\n    {\\r\\n        ToolInfo.finish_size = ToolInfo.drill_size;\\r\\n    }\\r\\n    double DrillSlotLevel = (ToolInfo.shape == \\\"slot\\\") ? UpParam.SlotLevel : UpParam.DrillLevel;  \\\/\\\/Drill step interval: Round holes have two levels (25\\\/50\\u03bcm), slot holes have one level (50\\u03bcm)\\r\\n    double UpLevel;\\r\\n    if (UpParam.DrillLevel > 49) \\\/\\\/When the step interval is 50\\u03bcm, do not use special drill bits\\r\\n    {\\r\\n        ContainDrillToolList = new List<double>();\\r\\n        UpLevel = UpParamHole.UpLevel;\\r\\n    }\\r\\n    else\\r\\n    {\\r\\n        UpLevel = UpParam.DrillLevel * 0.5;   \\\/\\\/Select drill bit by half of the step interval\\r\\n    }\\r\\n\\r\\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \\\/ DrillSlotLevel)); \\\/\\\/Drill step count\\r\\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step\\r\\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\\\/\\\/Remainder of drill size after step division\\r\\n    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n\\r\\n    \\\/\\\/Check if special drill bits are included\\r\\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt \\\/ DrillSlotLevel)) == DrillLevelCount);\\r\\n    if (ContainDrillIndex > -1)\\r\\n    {\\r\\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\\\/\\\/Remainder of special drill bit size after step division\\r\\n        if (DrillsizeFloat > UpLevel) \\\/\\\/ e.g. 38 > 20\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel);   \\\/\\\/e.g. 40-50\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 40-38\\r\\n            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;\\r\\n        }\\r\\n        else \\\/\\\/if (ContainDrillFloat < UpLevel)\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - 0);  \\\/\\\/e.g. 12-0\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 12-16\\r\\n            DrillsizeLevel = (diff1 < diff2) ? 0 : ContainDrillFloat;\\r\\n        }\\r\\n    }\\r\\n    ToolInfo.drill_size = DrillsizeInt + DrillsizeLevel;\\r\\n\\r\\n    double DiffDrillSizeUp = ToolInfo.drill_size - ToolInfo.finish_size;\\r\\n    if (ToolInfo.shape == \\\"slot\\\") \\\/\\\/ Slot length compensation\\r\\n    {\\r\\n        if (UpParam.isSlotUpLevel) \\\/\\\/Whether to round the slot length to step interval\\r\\n        {\\r\\n            Drillfinish_size = ToolInfo.slot_len + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n            DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) \\\/ DrillSlotLevel)); \\\/\\\/ Drill step count\\r\\n            DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step (50\\u03bcm)\\r\\n            DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) % DrillSlotLevel;\\\/\\\/Remainder of slot length after step division\\r\\n            DrillsizeLevel = (DrillsizeFloat > UpParamHole.UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\\r\\n        }\\r\\n        else\\r\\n        {\\r\\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \\\/ 10) * 10; \\\/\\\/ Round down to the nearest 10\\u03bcm\\r\\n            ToolInfo.slot_len = DrillsizeInt;\\r\\n        }\\r\\n        ToolInfo.drill_size += UpParam.SlotEndNumber;  \\\/\\\/ Add suffix number for slot drill bit segmentation\\r\\n    }\\r\\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\\r\\n    return 1;\\r\\n}\\r\\n\\r\\npublic class gToolUpParam\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for VIA holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for PTH (Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for NPTH (Non-Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for round drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double DrillLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for slot drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Suffix number for slot drill bit segmentation\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public int SlotEndNumber { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Additional compensation value for slot length (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLengthUp { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Whether to round the slot length to step interval\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public bool isSlotUpLevel { get; set; } = false;\\r\\n}\\r\\n\\r\\npublic class gToolUpParamHole\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation value (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpVal { get; set; } = 100;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval threshold for rounding up (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpLevel { get; set; } = 25;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Max_Tol { get; set; } = 76;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Min_Tol { get; set; } = 76;\\r\\n}\\r\\n\\r\\n\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Mod_tool: Drill tool attribute model\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\npublic class Mod_tool\\r\\n{\\r\\n    public int num { get; set; }\\r\\n    public string type { get; set; } \\\/\\\/ Hole type: via\\\/plate(nplate)\\r\\n    public string shape { get; set; } \\\/\\\/ Hole shape: round\\\/slot\\r\\n    public double finish_size { get; set; } \\\/\\\/ Finished hole size (in \\u03bcm)\\r\\n    public double drill_size { get; set; } \\\/\\\/ Drill bit size (in \\u03bcm)\\r\\n    public double max_tol { get; set; } \\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    public double min_tol { get; set; } \\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    public double slot_len { get; set; } \\\/\\\/ Slot length (in \\u03bcm)\\r\\n    public string bit { get; set; } \\\/\\\/ Drill bit size (in mm, formatted string)\\r\\n}\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"771dd1c\"}]},\"elements\":[],\"widgetType\":\"code-highlight\"},{\"id\":\"578eb26\",\"elType\":\"widget\",\"settings\":{\"editor\":\"<h2 data-start=\\\"10960\\\" data-end=\\\"11017\\\">6. Why does board thickness affect drill compensation?<\\\/h2>\\n<p data-start=\\\"11019\\\" data-end=\\\"11464\\\">I did not understand this at first either. The main reason is the high <strong data-start=\\\"11090\\\" data-end=\\\"11121\\\">thickness-to-diameter ratio<\\\/strong> (board thickness divided by hole diameter). A high ratio makes the copper at the hole center thinner and the copper at the hole edge thicker. To compute the thickness-to-diameter ratio you need the board thickness value. So board thickness enters the drill compensation rules. For high thickness-to-diameter holes, the compensation is larger.<\\\/p>\",\"display_condition_list\":[{\"display_condition_login_status\":\"subscriber\",\"_id\":\"715c69a\"}]},\"elements\":[],\"widgetType\":\"text-editor\"}],\"isInner\":false}]"],"_elementor_conditions":["a:0:{}"],"_edit_last":["1"],"_wp_page_template":["default"],"_elementor_version":["3.33.4"],"_elementor_pro_version":["3.31.2"],"_elementor_page_settings":["a:0:{}"],"rank_math_og_content_image":["a:2:{s:5:\"check\";s:32:\"ecdd2e25359dae372358174e8b65526d\";s:6:\"images\";a:1:{i:0;i:4578;}}"],"rank_math_primary_category":["1"],"site-post-title":[""],"_thumbnail_id":["4584"],"_elementor_controls_usage":["a:3:{s:11:\"text-editor\";a:3:{s:5:\"count\";i:3;s:15:\"control_percent\";i:1;s:8:\"controls\";a:2:{s:7:\"content\";a:1:{s:14:\"section_editor\";a:1:{s:6:\"editor\";i:3;}}s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:3;}}}}s:14:\"code-highlight\";a:3:{s:5:\"count\";i:2;s:15:\"control_percent\";i:1;s:8:\"controls\";a:2:{s:7:\"content\";a:1:{s:15:\"section_content\";a:2:{s:8:\"language\";i:2;s:4:\"code\";i:2;}}s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:2;}}}}s:9:\"container\";a:3:{s:5:\"count\";i:1;s:15:\"control_percent\";i:0;s:8:\"controls\";a:1:{s:8:\"advanced\";a:1:{s:26:\"display_conditions_section\";a:1:{s:22:\"display_condition_list\";i:1;}}}}}"],"_uag_css_file_name":["uag-css-4575.css"],"_uag_js_file_name":["uag-js-4575.js"],"_uag_page_assets":["a:9:{s:3:\"css\";s:30170:\".uag-blocks-common-selector{z-index:var(--z-index-desktop) !important}@media(max-width: 976px){.uag-blocks-common-selector{z-index:var(--z-index-tablet) !important}}@media(max-width: 767px){.uag-blocks-common-selector{z-index:var(--z-index-mobile) !important}}.uagb-social-share__outer-wrap,.uagb-social-share__wrap{display:flex;align-items:center;justify-content:center}.uagb-social-share__layout-vertical.uagb-social-share__outer-wrap,.uagb-social-share__layout-vertical .uagb-social-share__wrap{flex-direction:column}.uagb-social-share__layout-vertical .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:first-child{margin-top:0 !important}.uagb-social-share__layout-vertical .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:last-child{margin-bottom:0 !important}.uagb-social-share__outer-wrap a.uagb-button__link:focus{box-shadow:none}.uagb-social-share__outer-wrap .uagb-ss__wrapper{padding:0;margin-left:5px;margin-right:5px;transition:all .2s;display:inline-flex;text-align:center}.uagb-social-share__outer-wrap .uagb-ss__source-wrap{display:inline-block}.uagb-social-share__outer-wrap .uagb-ss__link{color:#3a3a3a;display:inline-table;line-height:0;cursor:pointer}.uagb-social-share__outer-wrap .uagb-ss__source-icon{font-size:40px;width:40px;height:40px}.uagb-social-share__outer-wrap .uagb-ss__source-image{width:40px}@media(max-width: 976px){.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left:0;margin-right:0}}.uagb-social-share__layout-horizontal .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:first-child{margin-left:0 !important}.uagb-social-share__layout-horizontal .wp-block-uagb-social-share-child.uagb-ss-repeater.uagb-ss__wrapper:last-child{margin-right:0 !important}.wp-block-uagb-social-share .uagb-social-share__wrapper{text-decoration:none}.uagb-social-share__wrapper{box-shadow:none}.uagb-social-share__outer-wrap:not(.uagb-social-share__no-label) .uagb-social-share__source-wrap{margin-right:15px}.uagb-social-share__outer-wrap.uagb-social-share__icon-at-top .uagb-social-share__source-wrap{-ms-flex-item-align:flex-start;align-self:flex-start;margin-top:5px}.uagb-block-015f0124 .uagb-ss-repeater span.uagb-ss__link{color: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater a.uagb-ss__link{color: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater span.uagb-ss__link svg{fill: #3a3a3a;}.uagb-block-015f0124 .uagb-ss-repeater a.uagb-ss__link svg{fill: #3a3a3a;}.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__link{padding: 10px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__link{padding: 10px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124 .wp-block-uagb-social-share-child {border-radius: 0px;}.uagb-block-015f0124 .uagb-ss__source-wrap{width: 30px;}.uagb-block-015f0124 .uagb-ss__source-wrap svg{width: 30px;height: 30px;}.uagb-block-015f0124 .uagb-ss__source-image{width: 30px;}.uagb-block-015f0124 .uagb-ss__source-icon{width: 30px;height: 30px;font-size: 30px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}.uagb-block-44317091.uagb-ss-repeater span.uagb-ss__link{color: #3b5998;}.uagb-block-44317091.uagb-ss-repeater a.uagb-ss__link{color: #3b5998;}.uagb-block-44317091.uagb-ss-repeater span.uagb-ss__link svg{fill: #3b5998;}.uagb-block-44317091.uagb-ss-repeater a.uagb-ss__link svg{fill: #3b5998;}.uagb-block-df693e43.uagb-ss-repeater span.uagb-ss__link{color: #55acee;}.uagb-block-df693e43.uagb-ss-repeater a.uagb-ss__link{color: #55acee;}.uagb-block-df693e43.uagb-ss-repeater span.uagb-ss__link svg{fill: #55acee;}.uagb-block-df693e43.uagb-ss-repeater a.uagb-ss__link svg{fill: #55acee;}.uagb-block-e0123642.uagb-ss-repeater span.uagb-ss__link{color: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater a.uagb-ss__link{color: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater span.uagb-ss__link svg{fill: #bd081c;}.uagb-block-e0123642.uagb-ss-repeater a.uagb-ss__link svg{fill: #bd081c;}.uagb-block-23521e42.uagb-ss-repeater span.uagb-ss__link{color: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater a.uagb-ss__link{color: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater span.uagb-ss__link svg{fill: #0077b5;}.uagb-block-23521e42.uagb-ss-repeater a.uagb-ss__link svg{fill: #0077b5;}@media only screen and (max-width: 976px) {.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}}@media only screen and (max-width: 767px) {.uagb-block-015f0124.uagb-social-share__layout-vertical .uagb-ss__wrapper{margin-left: 0;margin-right: 0;margin-top: 5px;margin-bottom: 5px;}.uagb-block-015f0124.uagb-social-share__layout-horizontal .uagb-ss__wrapper{margin-left: 5px;margin-right: 5px;}.uagb-block-015f0124.uagb-social-share__outer-wrap{justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: center;-ms-flex-align: center;align-items: center;}}.uagb-cta__outer-wrap .uagb-cta__content,.uagb-cta__outer-wrap a.uagb-cta__block-link span,.uagb-cta__outer-wrap .uagb-cta__content-right .uagb-cta__button-wrapper,.uagb-cta__outer-wrap .uagb-cta-typeof-button,.uagb-cta__outer-wrap .uagb-cta__content-right .uagb-cta__block-link,.uagb-cta__outer-wrap .uagb-cta-with-svg{display:inline-block}.uagb-cta__outer-wrap{display:flex;justify-content:space-between}.wp-block-uagb-call-to-action .uagb-cta__buttons{display:inline-flex}.wp-block-uagb-call-to-action .wp-block-button__link,.wp-block-uagb-call-to-action .ast-outline-button{fill:currentColor;justify-content:center}.uagb-cta__button-link-wrapper,.uagb-cta-second__button{display:inline-flex;align-items:center;word-break:keep-all;width:100%}.uagb-cta__title{padding:0;margin:0;display:block}.uagb-cta__content-right .uagb-cta__button-wrapper{float:right}.uagb-cta__link-wrapper.uagb-cta__block-link-style:empty{display:none}a.uagb-cta__block-link,.entry .entry-content a.uagb-cta__block-link,a.uagb-cta__block-link-wrap,.entry .entry-content a.uagb-cta__block-link-wrap{text-decoration:none}a.uagb-cta__block-link:hover,.entry .entry-content a.uagb-cta__block-link:hover,a.uagb-cta__block-link-wrap:hover,.entry .entry-content a.uagb-cta__block-link-wrap:hover .entry .entry-content a.uagb-cta__block-link:hover{color:inherit}.uagb-cta__content-right{text-align:right;justify-content:flex-end}.uagb-cta__left-right-wrap{width:100%;word-break:break-word}.uagb-cta__icon-position-below-title .uagb-cta__left-right-wrap{display:block;min-width:100%;width:100%}.uagb-cta__icon-position-left .uagb-cta__left-right-wrap,.uagb-cta__icon-position-right .uagb-cta__left-right-wrap{display:flex}.uagb-cta__icon-position-right .uagb-cta__left-right-wrap{justify-content:flex-end}.uagb-cta__block-link-icon-after{margin-left:5px;margin-right:0}.uagb-cta__block-link-icon-before{margin-left:0;margin-right:5px}.uagb-cta__block-link-icon,.uagb-cta__block svg{transition:all 200ms linear}.uagb-cta__block{position:relative}.uagb-cta-typeof-button{line-height:1;text-align:center}.uagb-cta__content-right .uagb-cta__button-link-wrapper,.uagb-cta__content-right .uagb-cta-second__button .uagb-cta__content-right .uagb-cta__block-link,.uagb-cta__content-right.uagb-cta__button-valign-middle .uagb-cta__left-right-wrap{display:flex;align-items:center}.uagb-cta__content-right .uagb-cta__button-link-wrapper,.uagb-cta__content-right .uagb-cta-second__button .uagb-cta__content-right .uagb-cta__block-link{justify-content:center}.uagb-cta__link-wrapper a{box-shadow:none;text-decoration:none}.uagb-cta__block,.uagb-cta__content,.uagb-cta__left-right-wrap{z-index:1}.uagb-cta__block-link{cursor:pointer}.uagb-cta__content-right .uagb-cta__block-link{float:right;padding:10px 14px}a.uagb-cta__block-link-wrap{color:inherit}.uagb-cta__content p:empty{display:none}.uagb-cta__button-type-none .uagb-cta__content{width:100%}.uagb-cta-with-svg{height:14px;width:14px;line-height:14px;vertical-align:middle}.uagb-cta__block svg{display:block;height:inherit;width:inherit}.uagb-cta__button-link-wrapper svg{width:20px;height:20px}.uagb-cta__align-button-after{margin-left:5px}.uagb-cta__align-button-before{margin-right:5px}.uagb-cta__block-link i{font-style:normal}a.uagb-cta__link-to-all{position:absolute;top:0;left:0;width:100%;height:100%;z-index:11}.wp-block-uagb-call-to-action{position:relative}.wp-block-uagb-call-to-action a.uagb-cta__link-to-all{position:absolute;top:0;left:0;width:100%;height:100%;z-index:11}@media only screen and (max-width: 976px){.uagb-cta__content-stacked-tablet,.uagb-cta__content-stacked-tablet .uagb-cta__left-right-wrap{flex-direction:column;text-align:center}.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__button-wrapper{float:none;margin:0 auto}.uagb-cta__content-stacked-tablet .uagb-cta__left-right-wrap .uagb-cta__content{margin-left:0;margin-right:0}.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content,.uagb-cta__content-stacked-tablet.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width:100% !important}}@media screen and (max-width: 767px){.uagb-cta__content-stacked-mobile,.uagb-cta__content-stacked-mobile .uagb-cta__left-right-wrap{flex-direction:column;text-align:center}.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__button-wrapper{float:none;margin:0 auto}.uagb-cta__content-stacked-mobile .uagb-cta__left-right-wrap .uagb-cta__content{margin-left:0;margin-right:0}.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content,.uagb-cta__content-stacked-mobile.uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width:100% !important}}.uagb-cta__desc p:last-child{margin-bottom:0}#uagb-cta-block-.wp-block-uagb-call-to-action .uagb-cta__title{margin-bottom: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action .uagb-cta__desc{margin-bottom: 10px;}#uagb-cta-block- .uagb-cta__align-button-after{margin-left: 10px;}#uagb-cta-block- .uagb-cta__align-button-before{margin-right: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta__button-link-wrapper > svg{margin-left: 10px;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta-second__button > svg{margin-left: 10px;font-size: 14px;width: 14px;height: 14px;line-height: 14px;}#uagb-cta-block- .uagb-cta__content-wrap{text-align: left;}#uagb-cta-block- .uagb-cta__wrap{width: 70%;text-align: left;}#uagb-cta-block-.wp-block-uagb-call-to-action{text-align: left;}#uagb-cta-block- .uagb-cta__left-right-wrap .uagb-cta__content{margin-left: 0px;}#uagb-cta-block- .uagb-cta__buttons{column-gap: 15px;}#uagb-cta-block-.wp-block-uagb-call-to-action {display: flex;justify-content: space-between;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__content{width: 70%;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta__button-link-wrapper {align-self: center;height: fit-content;margin-left: auto;}#uagb-cta-block-.wp-block-uagb-call-to-action  {flex-direction: row;align-items: center;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button{align-self: center;height: fit-content;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button:hover{background-color: !important;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button a.uagb-cta-second__button:focus{background-color: !important;}#uagb-cta-block- .uagb-cta__button-wrapper a.uagb-cta-typeof-button{color: #333;border-style: solid;}#uagb-cta-block-.wp-block-uagb-call-to-action.wp-block-button .uagb-cta__buttons a.uagb-cta__button-link-wrapper.wp-block-button__link{border-style: solid;}#uagb-cta-block-.wp-block-uagb-call-to-action a.uagb-cta-second__button{text-transform: normal;text-decoration: none;font-size: 14px;}@media only screen and (max-width: 976px) {#uagb-cta-block-.wp-block-uagb-call-to-action.uagb-cta__content-stacked-tablet {display: inherit;}#uagb-cta-block-.uagb-cta__content-stacked-tablet .uagb-cta__wrap{width: 100%;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block- .uagb-cta__wrap{text-align: center;}#uagb-cta-block-.wp-block-uagb-call-to-action {flex-direction: column;align-items: center;}}@media only screen and (max-width: 767px) {#uagb-cta-block-.wp-block-uagb-call-to-action.uagb-cta__content-stacked-mobile {display: inherit;}#uagb-cta-block-.uagb-cta__content-stacked-mobile .uagb-cta__wrap{width: 100%;}#uagb-cta-block- .uagb-cta__buttons{justify-content: center;}#uagb-cta-block- .uagb-cta__content-right .uagb-cta__left-right-wrap .uagb-cta__link-wrapper{width: 30%;}#uagb-cta-block- .uagb-cta__wrap{text-align: center;}#uagb-cta-block-.wp-block-uagb-call-to-action {flex-direction: column;align-items: center;}}.uagb-icon-list__wrap{display:flex;align-items:flex-start;justify-content:flex-start}.wp-block-uagb-icon-list-child{padding:0;transition:all .2s;display:inline-flex;color:#3a3a3a;align-items:center;text-decoration:none;box-shadow:none}.wp-block-uagb-icon-list-child span.uagb-icon-list__source-wrap{display:block;align-items:center}.uagb-icon-list__source-wrap svg{display:block}.uagb-icon-list__source-image{width:40px}.uagb-icon-list__outer-wrap .uagb-icon-list__content-wrap{color:#3a3a3a;display:flex;align-items:center}.wp-block-uagb-icon-list-child{position:relative}.wp-block-uagb-icon-list-child>a{position:absolute;top:0;left:0;width:100%;height:100%}img.uagb-icon-list__source-image{max-width:unset}.wp-block-uagb-icon-list-child .uagb-icon-list__label{word-break:break-word}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{padding: 0px;border-radius: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__label{text-decoration: !important;line-height: em;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__label{text-align: left;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child{text-decoration: !important;line-height: em;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-wrap{margin-right: 15px;}.uagb-block-ddf54d80.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-ddf54d80.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-b45e4180.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-b45e4180.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-6962245c.wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}.uagb-block-6962245c.wp-block-uagb-icon-list-child:hover .uagb-icon-list__source-wrap{background:  !important;border-color:  !important;}@media only screen and (max-width: 976px) {.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap {padding: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}}@media only screen and (max-width: 767px) {.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__source-image{width: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap svg{width: 16px;height: 16px;font-size: 16px;}.wp-block-uagb-icon-list.uagb-block-f606f41a .wp-block-uagb-icon-list-child .uagb-icon-list__source-wrap{padding: 0px;border-width: 0px;align-self: center;}.wp-block-uagb-icon-list.uagb-block-f606f41a .uagb-icon-list__wrap{display: flex;flex-direction: column;justify-content: center;-webkit-box-pack: center;-ms-flex-pack: center;-webkit-box-align: flex-start;-ms-flex-align: flex-start;align-items: flex-start;}.wp-block-uagb-icon-list.uagb-block-f606f41a.wp-block-uagb-icon-list .wp-block-uagb-icon-list-child{margin-left: 0;margin-right: 0;margin-bottom: 10px;}}.wp-block-uagb-container{display:flex;position:relative;box-sizing:border-box;transition-property:box-shadow;transition-duration:.2s;transition-timing-function:ease}.wp-block-uagb-container .spectra-container-link-overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:10}.wp-block-uagb-container.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.alignfull.uagb-is-root-container .uagb-container-inner-blocks-wrap{display:flex;position:relative;box-sizing:border-box;margin-left:auto !important;margin-right:auto !important}.wp-block-uagb-container .wp-block-uagb-blockquote,.wp-block-uagb-container .wp-block-spectra-pro-login,.wp-block-uagb-container .wp-block-spectra-pro-register{margin:unset}.wp-block-uagb-container .uagb-container__video-wrap{height:100%;width:100%;top:0;left:0;position:absolute;overflow:hidden;-webkit-transition:opacity 1s;-o-transition:opacity 1s;transition:opacity 1s}.wp-block-uagb-container .uagb-container__video-wrap video{max-width:100%;width:100%;height:100%;margin:0;line-height:1;border:none;display:inline-block;vertical-align:baseline;-o-object-fit:cover;object-fit:cover;background-size:cover}.wp-block-uagb-container.uagb-layout-grid{display:grid;width:100%}.wp-block-uagb-container.uagb-layout-grid>.uagb-container-inner-blocks-wrap{display:inherit;width:inherit}.wp-block-uagb-container.uagb-layout-grid>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.uagb-layout-grid.uagb-is-root-container>.wp-block-uagb-container{max-width:unset !important;width:unset !important}.wp-block-uagb-container.uagb-layout-grid.alignwide.uagb-is-root-container{margin-left:auto;margin-right:auto}.wp-block-uagb-container.uagb-layout-grid.alignfull.uagb-is-root-container .uagb-container-inner-blocks-wrap{display:inherit;position:relative;box-sizing:border-box;margin-left:auto !important;margin-right:auto !important}body .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>*:not(.wp-block-uagb-container):not(.wp-block-uagb-column):not(.wp-block-uagb-container):not(.wp-block-uagb-section):not(.uagb-container__shape):not(.uagb-container__video-wrap):not(.wp-block-spectra-pro-register):not(.wp-block-spectra-pro-login):not(.uagb-slider-container):not(.spectra-image-gallery__control-lightbox):not(.wp-block-uagb-info-box),body .wp-block-uagb-container>.uagb-container-inner-blocks-wrap,body .wp-block-uagb-container>*:not(.wp-block-uagb-container):not(.wp-block-uagb-column):not(.wp-block-uagb-container):not(.wp-block-uagb-section):not(.uagb-container__shape):not(.uagb-container__video-wrap):not(.wp-block-spectra-pro-register):not(.wp-block-spectra-pro-login):not(.uagb-slider-container):not(.spectra-container-link-overlay):not(.spectra-image-gallery__control-lightbox):not(.wp-block-uagb-lottie):not(.uagb-faq__outer-wrap){min-width:unset !important;width:100%;position:relative}body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container>ul,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>.wp-block-uagb-container ol,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap>ul,body .ast-container .wp-block-uagb-container>.uagb-container-inner-blocks-wrap ol{max-width:-webkit-fill-available;margin-block-start:0;margin-block-end:0;margin-left:20px}.ast-plain-container .editor-styles-wrapper .block-editor-block-list__layout.is-root-container .uagb-is-root-container.wp-block-uagb-container.alignwide{margin-left:auto;margin-right:auto}.uagb-container__shape{overflow:hidden;position:absolute;left:0;width:100%;line-height:0;direction:ltr}.uagb-container__shape-top{top:-3px}.uagb-container__shape-bottom{bottom:-3px}.uagb-container__shape.uagb-container__invert.uagb-container__shape-bottom,.uagb-container__shape.uagb-container__invert.uagb-container__shape-top{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.uagb-container__shape.uagb-container__shape-flip svg{transform:translateX(-50%) rotateY(180deg)}.uagb-container__shape svg{display:block;width:-webkit-calc(100% + 1.3px);width:calc(100% + 1.3px);position:relative;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%)}.uagb-container__shape .uagb-container__shape-fill{-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-transform:rotateY(0deg);transform:rotateY(0deg)}.uagb-container__shape.uagb-container__shape-above-content{z-index:9;pointer-events:none}.nv-single-page-wrap .nv-content-wrap.entry-content .wp-block-uagb-container.alignfull{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}@media only screen and (max-width: 767px){.wp-block-uagb-container .wp-block-uagb-advanced-heading{width:-webkit-fill-available}}.wp-block-uagb-image--align-none{justify-content:center}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape-top svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape.uagb-container__shape-top .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape-bottom svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__shape.uagb-container__shape-bottom .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-845e6da6 .uagb-container__video-wrap video{opacity: 1;}.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1200px);max-width: var(--inner-content-custom-width);width: 100%;flex-direction: column;align-items: center;justify-content: center;flex-wrap: nowrap;row-gap: 20px;column-gap: 20px;}.wp-block-uagb-container.uagb-block-845e6da6{box-shadow: 0px 0px   #00000070 ;padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;overflow: visible;order: initial;border-color: inherit;row-gap: 20px;column-gap: 20px;}@media only screen and (max-width: 976px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1024px);max-width: var(--inner-content-custom-width);width: 100%;}.wp-block-uagb-container.uagb-block-845e6da6{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}@media only screen and (max-width: 767px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-845e6da6{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-845e6da6 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 767px);max-width: var(--inner-content-custom-width);width: 100%;flex-wrap: wrap;}.wp-block-uagb-container.uagb-block-845e6da6{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}.wp-block-uagb-icon svg{width:30px}.uagb-icon-wrapper .uagb-svg-wrapper{transition:box-shadow .2s ease} .uagb-block-2b67c985.uagb-icon-wrapper{text-align: center;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper a{display: contents;} .uagb-block-2b67c985.uagb-icon-wrapper svg{width: 40px;height: 40px;transform: rotate(0deg);box-sizing: content-box;fill: #333;filter: drop-shadow( 0px 0px 0px #00000070 );} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;padding-top: 5px;padding-right: 5px;padding-bottom: 5px;padding-left: 5px;border-style: default;box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper:hover{box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper:focus-visible{box-shadow: 0px 0px 0 #00000070 ;}@media only screen and (max-width: 976px) { .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}@media only screen and (max-width: 767px) { .uagb-block-2b67c985.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}} .uagb-block-3c223d05.uagb-icon-wrapper{text-align: center;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper a{display: contents;} .uagb-block-3c223d05.uagb-icon-wrapper svg{width: 40px;height: 40px;transform: rotate(0deg);box-sizing: content-box;fill: #333;filter: drop-shadow( 0px 0px 0px #00000070 );} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;padding-top: 5px;padding-right: 5px;padding-bottom: 5px;padding-left: 5px;border-style: default;box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper:hover{box-shadow: 0px 0px 0 #00000070 ;} .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper:focus-visible{box-shadow: 0px 0px 0 #00000070 ;}@media only screen and (max-width: 976px) { .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}@media only screen and (max-width: 767px) { .uagb-block-3c223d05.uagb-icon-wrapper .uagb-svg-wrapper{display: inline-flex;}}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape-top svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape.uagb-container__shape-top .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape-bottom svg{width: calc( 100% + 1.3px );}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__shape.uagb-container__shape-bottom .uagb-container__shape-fill{fill: rgba(51,51,51,1);}.wp-block-uagb-container.uagb-block-e5b2e3b1 .uagb-container__video-wrap video{opacity: 1;}.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1200px);max-width: var(--inner-content-custom-width);width: 100%;flex-direction: column;align-items: center;justify-content: center;flex-wrap: nowrap;row-gap: 20px;column-gap: 20px;}.wp-block-uagb-container.uagb-block-e5b2e3b1{box-shadow: 0px 0px   #00000070 ;padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;overflow: visible;order: initial;border-color: inherit;row-gap: 20px;column-gap: 20px;}@media only screen and (max-width: 976px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 1024px);max-width: var(--inner-content-custom-width);width: 100%;}.wp-block-uagb-container.uagb-block-e5b2e3b1{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}@media only screen and (max-width: 767px) {.wp-block-uagb-container.uagb-is-root-container .uagb-block-e5b2e3b1{max-width: 100%;width: 100%;}.wp-block-uagb-container.uagb-is-root-container.alignfull.uagb-block-e5b2e3b1 > .uagb-container-inner-blocks-wrap{--inner-content-custom-width: min( 100%, 767px);max-width: var(--inner-content-custom-width);width: 100%;flex-wrap: wrap;}.wp-block-uagb-container.uagb-block-e5b2e3b1{padding-top: 10px;padding-bottom: 10px;padding-left: 10px;padding-right: 10px;margin-top:  !important;margin-bottom:  !important;order: initial;}}\";s:2:\"js\";s:2038:\"document.addEventListener(\"DOMContentLoaded\", function(){ var ssLinksParent = document.querySelector( '.uagb-block-015f0124' );\nssLinksParent?.addEventListener( 'keyup', function ( e ) {\nvar link = e.target.closest( '.uagb-ss__link' );\nif ( link && e.keyCode === 13 ) {\n\thandleSocialLinkClick( link );\n}\n});\n\nssLinksParent?.addEventListener( 'click', function ( e ) {\nvar link = e.target.closest( '.uagb-ss__link' );\nif ( link ) {\n\thandleSocialLinkClick( link );\n}\n});\n\nfunction handleSocialLinkClick( link ) {\nvar social_url = link.dataset.href;\nvar target = \"\";\nif ( social_url == \"mailto:?body=\" ) {\n\ttarget = \"_self\";\n}\nvar request_url = \"\";\nif ( social_url.indexOf(\"\/pin\/create\/link\/?url=\") !== -1 ) {\n\trequest_url = social_url + encodeURIComponent( window.location.href ) + \"&media=\" + 'https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp';\n} else {\n\trequest_url = social_url + encodeURIComponent( window.location.href );\n}\nwindow.open( request_url, target );\n}\n\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => {\n\t\t\t\t\tconst blockScope = document.querySelector( '.uagb-block-2b67c985' );\n\t\t\t\t\tif ( ! blockScope ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst anchorElement = blockScope.querySelector('a');\n\t\t\t\t\tif (!anchorElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\n\t\t\t\t\t \n\t\t\t\t\tblockScope.addEventListener('keydown', (event) => {\n\t\t\t\t\t\tif ( 13 === event.keyCode || 32 === event.keyCode ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tanchorElement.click();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t\t\t\t\twindow.addEventListener( 'DOMContentLoaded', () => {\n\t\t\t\t\tconst blockScope = document.querySelector( '.uagb-block-3c223d05' );\n\t\t\t\t\tif ( ! blockScope ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst anchorElement = blockScope.querySelector('a');\n\t\t\t\t\tif (!anchorElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} \n\n\t\t\t\t\t \n\t\t\t\t\tblockScope.addEventListener('keydown', (event) => {\n\t\t\t\t\t\tif ( 13 === event.keyCode || 32 === event.keyCode ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\tanchorElement.click();\t\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t });\";s:18:\"current_block_list\";a:19:{i:0;s:11:\"core\/search\";i:1;s:10:\"core\/group\";i:2;s:12:\"core\/heading\";i:3;s:17:\"core\/latest-posts\";i:4;s:20:\"core\/latest-comments\";i:5;s:13:\"core\/archives\";i:6;s:15:\"core\/categories\";i:7;s:10:\"core\/image\";i:8;s:14:\"core\/paragraph\";i:9;s:10:\"core\/embed\";i:10;s:17:\"uagb\/social-share\";i:11;s:23:\"uagb\/social-share-child\";i:12;s:19:\"uagb\/call-to-action\";i:13;s:14:\"uagb\/icon-list\";i:14;s:20:\"uagb\/icon-list-child\";i:15;s:14:\"uagb\/container\";i:16;s:9:\"uagb\/icon\";i:17;s:17:\"core\/social-links\";i:18;s:16:\"core\/social-link\";}s:8:\"uag_flag\";b:1;s:11:\"uag_version\";s:10:\"1778144389\";s:6:\"gfonts\";a:0:{}s:10:\"gfonts_url\";s:0:\"\";s:12:\"gfonts_files\";a:0:{}s:14:\"uag_faq_layout\";b:0;}"],"_elementor_page_assets":["a:2:{s:7:\"scripts\";a:7:{i:0;s:18:\"elementor-frontend\";i:1;s:12:\"prismjs_core\";i:2;s:14:\"prismjs_loader\";i:3;s:17:\"prismjs_normalize\";i:4;s:17:\"highlight_handler\";i:5;s:20:\"prismjs_line_numbers\";i:6;s:25:\"prismjs_copy_to_clipboard\";}s:6:\"styles\";a:1:{i:0;s:21:\"widget-code-highlight\";}}"],"_elementor_css":["a:6:{s:4:\"time\";i:1778182270;s:5:\"fonts\";a:0:{}s:5:\"icons\";a:0:{}s:20:\"dynamic_elements_ids\";a:0:{}s:6:\"status\";s:4:\"file\";i:0;s:0:\"\";}"],"_elementor_element_cache":["{\"timeout\":1778268671,\"value\":{\"content\":\"<div class=\\\"elementor-element elementor-element-733c0b06 e-flex e-con-boxed e-con e-parent\\\" data-id=\\\"733c0b06\\\" data-element_type=\\\"container\\\" data-e-type=\\\"container\\\">\\n\\t\\t\\t\\t\\t<div class=\\\"e-con-inner\\\">\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6IjYyNjk4NDZkIiwiZWxUeXBlIjoid2lkZ2V0Iiwic2V0dGluZ3MiOnsiZWRpdG9yIjoiPHAgZGF0YS1zdGFydD1cIjQ5XCIgZGF0YS1lbmQ9XCI0NjFcIj5UaGVyZSBhcmUgbm8gZ3JlYXQgaW5kaXZpZHVhbHMsIG9ubHkgZ3JlYXQgdGVhbXMuIFdpdGggdGhlIHRlYW0gd29ya2luZyB0b2dldGhlciwgdGhlIGZpcnN0LXN0YWdlIFBDQiBDQU0gYXV0b21hdGlvbiBwcm9qZWN0IGZvciA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNzhcIiBkYXRhLWVuZD1cIjE5NFwiPm5ldCBoYW5kbGluZzxcL3N0cm9uZz4gYW5kIDxzdHJvbmcgZGF0YS1zdGFydD1cIjE5OVwiIGRhdGEtZW5kPVwiMjE3XCI+ZHJpbGwgaGFuZGxpbmc8XC9zdHJvbmc+IGlzIGRvbmUuIE5leHQsIHdlIGNhbiBtb3ZlIG9uIHRvIHRoZSBQQ0IgcnVsZXMgZW5naW5lLiBIZXJlIEkgdGFsayBhYm91dCBkcmlsbCBjb21wZW5zYXRpb24gaW4gUENCIGVuZ2luZWVyaW5nLiBBcyBhIFBDQiBlbmdpbmVlcmluZyBkZXZlbG9wZXIsIHlvdSBzaG91bGQga25vdyB3aGF0IGl0IGlzIGFuZCB3aHkgaXQgd29ya3MuIEkgc2hhcmUgdGhlIGtleSBwb2ludHMgYWJvdXQgZHJpbGwgY29tcGVuc2F0aW9uIGJlbG93LjxcL3A+XG48aHIgZGF0YS1zdGFydD1cIjQ2M1wiIGRhdGEtZW5kPVwiNDY2XCIgXC8+XG48aDIgZGF0YS1zdGFydD1cIjQ2OFwiIGRhdGEtZW5kPVwiNTA3XCI+MS4gV2h5IGRvIHdlIGNvbXBlbnNhdGUgZHJpbGwgc2l6ZXM\\\/PFwvaDI+XG48cCBkYXRhLXN0YXJ0PVwiNTA5XCIgZGF0YS1lbmQ9XCI4NzBcIj5UaGUgaG9sZSBzaXplcyBpbiB0aGUgUENCIGZpbGVzIHRoZSBjdXN0b21lciBnaXZlcyB1c3VhbGx5IG1lYW4gdGhlIDxlbSBkYXRhLXN0YXJ0PVwiNTc3XCIgZGF0YS1lbmQ9XCI1ODRcIj5maW5hbDxcL2VtPiBob2xlIHNpemUuIER1cmluZyBQQ0IgcHJvZHVjdGlvbiwgY29wcGVyIGlzIHBsYXRlZCBpbnNpZGUgdGhlIGhvbGVzIChvciB0aGUgaG9sZXMgZ2V0IGEgc3VyZmFjZSBmaW5pc2ggc3VjaCBhcyBIQVNMLCBFTklHLCBPU1AsIGV0Yy4pLiBUaGlzIG1ha2VzIHRoZSBob2xlIHNtYWxsZXIuIFRvIG1ha2Ugc3VyZSB0aGUgZmluYWwgaG9sZSBzaXplIG1lZXRzIHRoZSByZXF1aXJlbWVudCwgdGhlIENBTSBzdGVwIGNvcnJlY3RzIHRoZSBkcmlsbCBzaXplLiBUaGlzIGlzIGRyaWxsIGNvbXBlbnNhdGlvbi48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjg3MlwiIGRhdGEtZW5kPVwiMTE3MVwiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjg3MlwiIGRhdGEtZW5kPVwiODg5XCI+UmVhbCBleGFtcGxlOjxcL3N0cm9uZz48YnIgZGF0YS1zdGFydD1cIjg4OVwiIGRhdGEtZW5kPVwiODkyXCIgXC8+RmluYWwgaG9sZSBzaXplOiA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MDlcIiBkYXRhLWVuZD1cIjkyMFwiPjEuMDAgbW08XC9zdHJvbmc+LiBTdXJmYWNlIGZpbmlzaDogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTM4XCIgZGF0YS1lbmQ9XCI5NDZcIj5FTklHPFwvc3Ryb25nPiAobmlja2VsIHRoaWNrbmVzcyAyLjU0IFx1MDBiNW0sIGdvbGQgdGhpY2tuZXNzIDAuMDI1NCBcdTAwYjVtKS4gRm9sbG93IElQQyBDbGFzcyBJSSBhbmQgdGhlIGF2ZXJhZ2UgcGxhdGVkIGNvcHBlciB0aGlja25lc3MgaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTA2NFwiIGRhdGEtZW5kPVwiMTA3M1wiPjIwIFx1MDBiNW08XC9zdHJvbmc+LiBJZiB3ZSB1c2UgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTA4NVwiIGRhdGEtZW5kPVwiMTA5NlwiPjAuMTAgbW08XC9zdHJvbmc+IGFzIHRoZSBjb21wZW5zYXRpb24gdmFsdWUsIHRoZSBDQU0gdGVhbSB3aWxsIHBpY2sgYSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxMTQ5XCIgZGF0YS1lbmQ9XCIxMTYwXCI+MS4xMCBtbTxcL3N0cm9uZz4gZHJpbGwgYml0LjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiODcyXCIgZGF0YS1lbmQ9XCIxMTcxXCI+PGltZyBjbGFzcz1cImFsaWdubm9uZSBzaXplLWZ1bGwgd3AtaW1hZ2UtNDU3OFwiIHNyYz1cImh0dHBzOlwvXC9mbGotcGNiLmNvbVwvd3AtY29udGVudFwvdXBsb2Fkc1wvMjAyNVwvMTJcL1JlYWwtZXhhbXBsZS53ZWJwXCIgYWx0PVwiUmVhbCBleGFtcGxlXCIgd2lkdGg9XCIzMzZcIiBoZWlnaHQ9XCIyOTdcIiBcLz48XC9wPlxuPGhyIGRhdGEtc3RhcnQ9XCIxMTczXCIgZGF0YS1lbmQ9XCIxMTc2XCIgXC8+XG48aDIgZGF0YS1zdGFydD1cIjExNzhcIiBkYXRhLWVuZD1cIjEyMTZcIj4yLiBIb3cgZG8gd2UgZG8gZHJpbGwgY29tcGVuc2F0aW9uPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjEyMThcIiBkYXRhLWVuZD1cIjE0NDVcIj5GaXJzdCwgYmUgY2xlYXIgYWJvdXQgdGhlIHRocmVlIGtleSBwYXJhbWV0ZXJzIGZvciBkcmlsbCBjb21wZW5zYXRpb246PGJyIGRhdGEtc3RhcnQ9XCIxMjg4XCIgZGF0YS1lbmQ9XCIxMjkxXCIgXC8+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTI5MVwiIGRhdGEtZW5kPVwiMTI5OFwiPigxKTxcL3N0cm9uZz4gRHJpbGwgYml0IGluY3JlbWVudCw8YnIgZGF0YS1zdGFydD1cIjEzMTlcIiBkYXRhLWVuZD1cIjEzMjJcIiBcLz48c3Ryb25nIGRhdGEtc3RhcnQ9XCIxMzIyXCIgZGF0YS1lbmQ9XCIxMzI5XCI+KDIpPFwvc3Ryb25nPiBDb21wZW5zYXRpb24gdmFsdWUsPGJyIGRhdGEtc3RhcnQ9XCIxMzQ5XCIgZGF0YS1lbmQ9XCIxMzUyXCIgXC8+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTM1MlwiIGRhdGEtZW5kPVwiMTM1OVwiPigzKTxcL3N0cm9uZz4gU3RlcC11cCB0aHJlc2hvbGQgKGFkdmFuY2UgdmFsdWUpLjxiciBkYXRhLXN0YXJ0PVwiMTM5NFwiIGRhdGEtZW5kPVwiMTM5N1wiIFwvPlRoZXNlIHRocmVlIGRldGVybWluZSBob3cgdG8gYXBwbHkgY29tcGVuc2F0aW9uLjxcL3A+XG48aDMgZGF0YS1zdGFydD1cIjE0NDdcIiBkYXRhLWVuZD1cIjE0NzVcIj4xKSBEcmlsbCBiaXQgaW5jcmVtZW50PFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMTQ3NlwiIGRhdGEtZW5kPVwiMTc3M1wiPlRoaXMgZGVwZW5kcyBvbiB0aGUgZHJpbGwgYml0cyB0aGUgY29tcGFueSBidXlzLiBUaGUgaW5kdXN0cnkgY29tbW9uIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNTU4XCIgZGF0YS1lbmQ9XCIxNTY3XCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4uIFR5cGljYWwgZHJpbGwgc2l6ZXMgcmFuZ2UgZnJvbSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNjAwXCIgZGF0YS1lbmQ9XCIxNjExXCI+MC4xMCBtbTxcL3N0cm9uZz4gdG8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTYxNVwiIGRhdGEtZW5kPVwiMTYyNlwiPjYuMzUgbW08XC9zdHJvbmc+LiBUaGUgdXN1YWwgc21hbGxlc3Qgc3RlcCBiZXR3ZWVuIGRyaWxsIGJpdHMgaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTY3NFwiIGRhdGEtZW5kPVwiMTY4NVwiPjAuMDUgbW08XC9zdHJvbmc+LiBTbyB0aGUgZHJpbGwgbGlicmFyeSBoYXMgc2l6ZXMgbGlrZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIxNzIzXCIgZGF0YS1lbmQ9XCIxNzYxXCI+MC4xMCBtbSwgMC4xNSBtbSwgMC4yMCBtbSwgMC4yNSBtbTxcL3N0cm9uZz4sIGFuZCBzbyBvbi48XC9wPlxuPGgzIGRhdGEtc3RhcnQ9XCIxNzc1XCIgZGF0YS1lbmQ9XCIxODAyXCI+MikgQ29tcGVuc2F0aW9uIHZhbHVlPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMTgwM1wiIGRhdGEtZW5kPVwiMTk1MlwiPlRoZSBwcm9jZXNzIHRlYW0gc2V0cyB0aGUgY29tcGVuc2F0aW9uIHJ1bGVzIGJhc2VkIG9uIGZhY3RvcnkgdGVzdCByZXN1bHRzLiBDb21wZW5zYXRpb24gdmFsdWVzIGRvIG5vdCB2YXJ5IG11Y2ggYWNyb3NzIHRoZSBpbmR1c3RyeS4gQ29tbW9uIHJ1bGVzOjxcL3A+XG48dWwgZGF0YS1zdGFydD1cIjE5NTNcIiBkYXRhLWVuZD1cIjIwOThcIj5cbjxsaSBkYXRhLXN0YXJ0PVwiMTk1M1wiIGRhdGEtZW5kPVwiMjAxNFwiPlxuPHAgZGF0YS1zdGFydD1cIjE5NTVcIiBkYXRhLWVuZD1cIjIwMTRcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIxOTU1XCIgZGF0YS1lbmQ9XCIxOTc1XCI+Qm9hcmRzIHdpdGggSEFTTDxcL3N0cm9uZz4gKHNwcmF5IHRpbik6IDxzdHJvbmcgZGF0YS1zdGFydD1cIjE5ODlcIiBkYXRhLWVuZD1cIjIwMTFcIj5jb21wZW5zYXRlIDAuMTUgbW08XC9zdHJvbmc+LjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiMjAxNVwiIGRhdGEtZW5kPVwiMjA5OFwiPlxuPHAgZGF0YS1zdGFydD1cIjIwMTdcIiBkYXRhLWVuZD1cIjIwOThcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMDE3XCIgZGF0YS1lbmQ9XCIyMDQwXCI+Qm9hcmRzIHdpdGhvdXQgSEFTTDxcL3N0cm9uZz4gKEVOSUcsIGltbWVyc2lvbiB0aW4sIE9TUCwgZXRjLik6IDxzdHJvbmcgZGF0YS1zdGFydD1cIjIwNzVcIiBkYXRhLWVuZD1cIjIwOTdcIj5jb21wZW5zYXRlIDAuMTAgbW08XC9zdHJvbmc+LjxcL3A+XG48XC9saT5cbjxcL3VsPlxuPGgzIGRhdGEtc3RhcnQ9XCIyMTAwXCIgZGF0YS1lbmQ9XCIyMTQyXCI+MykgU3RlcC11cCB0aHJlc2hvbGQgKGFkdmFuY2UgdmFsdWUpPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiMjE0M1wiIGRhdGEtZW5kPVwiMjQwM1wiPlRoZSBwcm9jZXNzIHRlYW0gYWxzbyBzZXRzIHRoZSBzdHJhdGVneSBmb3IgcGlja2luZyB0aGUgZHJpbGwgYml0LCBzaW1pbGFyIHRvIGEgcm91bmRpbmcgcnVsZS4gRm9yIGV4YW1wbGUsIHdoZW4gdGhlIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMjczXCIgZGF0YS1lbmQ9XCIyMjgyXCI+MjAgXHUwMGI1bTxcL3N0cm9uZz4sIGlmIHRoZSByZW1haW5kZXIgYWZ0ZXIgZGl2aWRpbmcgYnkgdGhlIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyMzM2XCIgZGF0YS1lbmQ9XCIyMzQ3XCI+XHUyMjY1IDIwIFx1MDBiNW08XC9zdHJvbmc+LCB5b3Ugcm91bmQgdXAgNTAgXHUwMGI1bTsgb3RoZXJ3aXNlIHlvdSBrZWVwIHRoZSBsb3dlciBzaXplLjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiMjQwNVwiIGRhdGEtZW5kPVwiMjczN1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjI0MDVcIiBkYXRhLWVuZD1cIjI0MTdcIj5FeGFtcGxlOjxcL3N0cm9uZz48YnIgZGF0YS1zdGFydD1cIjI0MTdcIiBkYXRhLWVuZD1cIjI0MjBcIiBcLz5GaW5hbCBob2xlIHNpemUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNDM4XCIgZGF0YS1lbmQ9XCIyNDUwXCI+MS4wMjUgbW08XC9zdHJvbmc+LCBjb21wZW5zYXRpb24gPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNDY3XCIgZGF0YS1lbmQ9XCIyNDc4XCI+MC4xMCBtbTxcL3N0cm9uZz4sIHNvIGNvbXBlbnNhdGVkIHNpemUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyNTAyXCIgZGF0YS1lbmQ9XCIyNTE0XCI+MS4xMjUgbW08XC9zdHJvbmc+LiBCdXQgdGhlcmUgaXMgbm8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjUzMlwiIGRhdGEtZW5kPVwiMjU0NFwiPjEuMTI1IG1tPFwvc3Ryb25nPiBkcmlsbCBpbiB0aGUgbGlicmFyeS4gVXNlIHRoZSBzdGVwLXVwIHJ1bGUuIFRoZSByZW1haW5kZXIgb2YgMS4xMjUgbW0gd2hlbiBjb21wYXJlZCB0byB0aGUgMC4wNSBtbSBzdGVwIGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjI2NTJcIiBkYXRhLWVuZD1cIjI2NjFcIj4yNSBcdTAwYjVtPFwvc3Ryb25nPi4gU2luY2UgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjY2OVwiIGRhdGEtZW5kPVwiMjY4NlwiPjI1IFx1MDBiNW0gJmd0OyAyMCBcdTAwYjVtPFwvc3Ryb25nPiwgcm91bmQgdXAgYnkgNTAgXHUwMGI1bSBhbmQgY2hvb3NlIGEgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjcxOVwiIGRhdGEtZW5kPVwiMjczMFwiPjEuMTUgbW08XC9zdHJvbmc+IGRyaWxsLjxcL3A+XG48aHIgZGF0YS1zdGFydD1cIjI3MzlcIiBkYXRhLWVuZD1cIjI3NDJcIiBcLz5cbjxoMyBkYXRhLXN0YXJ0PVwiMjc0NFwiIGRhdGEtZW5kPVwiMjc4MlwiPkFjdHVhbCBkcmlsbCBjb21wZW5zYXRpb24gZXhhbXBsZXM8XC9oMz5cbjxwIGRhdGEtc3RhcnQ9XCIyNzg0XCIgZGF0YS1lbmQ9XCIyODUwXCI+QXNzdW1lOiBkcmlsbCBpbmNyZW1lbnQgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIyODEwXCIgZGF0YS1lbmQ9XCIyODE5XCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4sIHN0ZXAtdXAgdGhyZXNob2xkID0gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMjg0MVwiIGRhdGEtZW5kPVwiMjg1MFwiPjIwIFx1MDBiNW08XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCIyODUyXCIgZGF0YS1lbmQ9XCIzMDk3XCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjI4NTJcIiBkYXRhLWVuZD1cIjI5NDdcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiMjg1MlwiIGRhdGEtZW5kPVwiMjk0N1wiPlxuPHRoIGRhdGEtc3RhcnQ9XCIyODUyXCIgZGF0YS1lbmQ9XCIyODY4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+T3JpZ2luYWwgaG9sZTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIyODY4XCIgZGF0YS1lbmQ9XCIyODgzXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0aW9uPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjI4ODNcIiBkYXRhLWVuZD1cIjI5MDRcIiBkYXRhLWNvbC1zaXplPVwic21cIj5BZnRlciBjb21wZW5zYXRpb248XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMjkwNFwiIGRhdGEtZW5kPVwiMjkxOVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkludGVnZXIgcGFydDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIyOTE5XCIgZGF0YS1lbmQ9XCIyOTMxXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+UmVtYWluZGVyPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjI5MzFcIiBkYXRhLWVuZD1cIjI5NDdcIiBkYXRhLWNvbC1zaXplPVwic21cIj5EcmlsbCBjaG9zZW48XC90aD5cbjxcL3RyPlxuPFwvdGhlYWQ+XG48dGJvZHkgZGF0YS1zdGFydD1cIjI5ODBcIiBkYXRhLWVuZD1cIjMwOTdcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiMjk4MFwiIGRhdGEtZW5kPVwiMzAzOFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIyOTgwXCIgZGF0YS1lbmQ9XCIyOTkxXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MS4wMjUgbW08XC90ZD5cbjx0ZCBkYXRhLXN0YXJ0PVwiMjk5MVwiIGRhdGEtZW5kPVwiMjk5OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjAuMTA8XC90ZD5cbjx0ZCBkYXRhLXN0YXJ0PVwiMjk5OFwiIGRhdGEtZW5kPVwiMzAwOVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMTI1IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwMDlcIiBkYXRhLWVuZD1cIjMwMTZcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwMTZcIiBkYXRhLWVuZD1cIjMwMjdcIj4wLjAyNSBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDI3XCIgZGF0YS1lbmQ9XCIzMDM4XCI+MS4xNSBtbTxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjMwMzlcIiBkYXRhLWVuZD1cIjMwOTdcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMzAzOVwiIGRhdGEtZW5kPVwiMzA1MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDE2IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwNTBcIiBkYXRhLWVuZD1cIjMwNTdcIj4wLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjMwNTdcIiBkYXRhLWVuZD1cIjMwNjhcIj4xLjExNiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDY4XCIgZGF0YS1lbmQ9XCIzMDc1XCI+MS4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIzMDc1XCIgZGF0YS1lbmQ9XCIzMDg2XCI+MC4wMTYgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMzA4NlwiIGRhdGEtZW5kPVwiMzA5N1wiPjEuMTAgbW08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxoNCBkYXRhLXN0YXJ0PVwiMzA5OVwiIGRhdGEtZW5kPVwiMzE0MFwiPkhvdyB0byBjb21wdXRlIHRoZSBjaG9zZW4gZHJpbGwgc2l6ZTxcL2g0PlxuPHAgZGF0YS1zdGFydD1cIjMxNDFcIiBkYXRhLWVuZD1cIjMyNDFcIj5CcmVhayB0aGUgY29tcGVuc2F0ZWQgaG9sZSBzaXplIGludG8gYW4gaW50ZWdlciBwYXJ0IGFuZCBhIHJlbWFpbmRlciBwYXJ0IHVzaW5nIHRoZSBkcmlsbCBpbmNyZW1lbnQ6PFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCIzMjQzXCIgZGF0YS1lbmQ9XCIzMzk2XCI+VGFrZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIzMjQ4XCIgZGF0YS1lbmQ9XCIzMjYwXCI+MS4xMjUgbW08XC9zdHJvbmc+IGFzIGFuIGV4YW1wbGU6PGJyIGRhdGEtc3RhcnQ9XCIzMjc1XCIgZGF0YS1lbmQ9XCIzMjc4XCIgXC8+MS4xMjUgXC8gMC4wNSA9IDIyLjUgXHUyMTkyIGZsb29yIHRvIDIyIFx1MjE5MiBpbnRlZ2VyIHBhcnQgPSAyMiBcdTAwZDcgMC4wNSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjMzNDFcIiBkYXRhLWVuZD1cIjMzNTJcIj4xLjEwIG1tPFwvc3Ryb25nPi48YnIgZGF0YS1zdGFydD1cIjMzNTNcIiBkYXRhLWVuZD1cIjMzNTZcIiBcLz5SZW1haW5kZXIgPSAxLjEyNSAlIDAuMDUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCIzMzgzXCIgZGF0YS1lbmQ9XCIzMzk1XCI+MC4wMjUgbW08XC9zdHJvbmc+LjxcL3A+XG48cCBkYXRhLXN0YXJ0PVwiMzM5OFwiIGRhdGEtZW5kPVwiMzQ3NVwiPlRoZW4gY29tcGFyZSB0aGUgcmVtYWluZGVyIHdpdGggdGhlIHN0ZXAtdXAgdGhyZXNob2xkIChmb3IgZXhhbXBsZSwgMjAgXHUwMGI1bSk6PFwvcD5cbjx1bCBkYXRhLXN0YXJ0PVwiMzQ3NlwiIGRhdGEtZW5kPVwiMzYwN1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCIzNDc2XCIgZGF0YS1lbmQ9XCIzNTQyXCI+XG48cCBkYXRhLXN0YXJ0PVwiMzQ3OFwiIGRhdGEtZW5kPVwiMzU0MlwiPklmIHJlbWFpbmRlciAmZ3Q7IHRocmVzaG9sZCwgZHJpbGwgc2l6ZSA9IGludGVnZXIgcGFydCArIDAuMDUgbW0uPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCIzNTQzXCIgZGF0YS1lbmQ9XCIzNjA3XCI+XG48cCBkYXRhLXN0YXJ0PVwiMzU0NVwiIGRhdGEtZW5kPVwiMzYwN1wiPklmIHJlbWFpbmRlciBcdTIyNjQgdGhyZXNob2xkLCBkcmlsbCBzaXplID0gaW50ZWdlciBwYXJ0ICsgMC4wMCBtbS48XC9wPlxuPFwvbGk+XG48XC91bD5cbjxociBkYXRhLXN0YXJ0PVwiMzYwOVwiIGRhdGEtZW5kPVwiMzYxMlwiIFwvPlxuPGgzIGRhdGEtc3RhcnQ9XCIzNjE0XCIgZGF0YS1lbmQ9XCIzNjUzXCI+U3VtbWFyeSBhYm91dCB0aGUgc3RlcC11cCB0aHJlc2hvbGQ8XC9oMz5cbjxwIGRhdGEtc3RhcnQ9XCIzNjU0XCIgZGF0YS1lbmQ9XCIzODk3XCI+V2hlbiB0aGUgZHJpbGwgaW5jcmVtZW50IGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjM2ODJcIiBkYXRhLWVuZD1cIjM2OTFcIj41MCBcdTAwYjVtPFwvc3Ryb25nPiwgdGhlIHN0ZXAtdXAgdGhyZXNob2xkIGlzIGNyaXRpY2FsLiBJdCBwZXJmb3JtcyBhIHNlY29uZCBjb3JyZWN0aW9uIG9mIHRoZSBjb21wZW5zYXRlZCBkcmlsbCBzaXplLiBJdCBkZWNpZGVzIHdoZXRoZXIgdG8gXHUyMDFjc3RlcCB1cFx1MjAxZCBvciBcdTIwMWNzdGF5Llx1MjAxZCBDaGFuZ2luZyB0aGlzIHRocmVzaG9sZCBkaXJlY3RseSBjaGFuZ2VzIHRoZSBjaG9zZW4gZHJpbGwgc2l6ZS48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjM4OTlcIiBkYXRhLWVuZD1cIjM5NDNcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCIzODk5XCIgZGF0YS1lbmQ9XCIzOTQzXCI+TW9yZSBleGFtcGxlcyAoZHJpbGwgaW5jcmVtZW50ID0gNTAgXHUwMGI1bSk6PFwvc3Ryb25nPjxcL3A+XG48ZGl2IGNsYXNzPVwiVHlhZ0dXX3RhYmxlQ29udGFpbmVyXCI+XG48ZGl2IGNsYXNzPVwiZ3JvdXAgVHlhZ0dXX3RhYmxlV3JhcHBlciBmbGV4IHctZml0IGZsZXgtY29sLXJldmVyc2VcIiB0YWJpbmRleD1cIi0xXCI+XG48dGFibGUgY2xhc3M9XCJ3LWZpdCBtaW4tdy0oLS10aHJlYWQtY29udGVudC13aWR0aClcIiBkYXRhLXN0YXJ0PVwiMzk0NVwiIGRhdGEtZW5kPVwiNDIwOVwiPlxuPHRoZWFkIGRhdGEtc3RhcnQ9XCIzOTQ1XCIgZGF0YS1lbmQ9XCI0MDQxXCI+XG48dHIgZGF0YS1zdGFydD1cIjM5NDVcIiBkYXRhLWVuZD1cIjQwNDFcIj5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk0NVwiIGRhdGEtZW5kPVwiMzk2MVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPk9yaWdpbmFsIGhvbGU8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk2MVwiIGRhdGEtZW5kPVwiMzk3NlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkNvbXBlbnNhdGlvbjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCIzOTc2XCIgZGF0YS1lbmQ9XCIzOTkwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QWZ0ZXIgY29tcC48XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiMzk5MFwiIGRhdGEtZW5kPVwiNDAwMFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkludGVnZXI8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNDAwMFwiIGRhdGEtZW5kPVwiNDAxMlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPlJlbWFpbmRlcjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI0MDEyXCIgZGF0YS1lbmQ9XCI0MDMyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+U3RlcC11cCB0aHJlc2hvbGQ8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNDAzMlwiIGRhdGEtZW5kPVwiNDA0MVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkRyaWxsPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI0MDc5XCIgZGF0YS1lbmQ9XCI0MjA5XCI+XG48dHIgZGF0YS1zdGFydD1cIjQwNzlcIiBkYXRhLWVuZD1cIjQxNDNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNDA3OVwiIGRhdGEtZW5kPVwiNDA5MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQwOTBcIiBkYXRhLWVuZD1cIjQwOTZcIj4wLjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDA5NlwiIGRhdGEtZW5kPVwiNDEwN1wiPjEuMTIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxMDdcIiBkYXRhLWVuZD1cIjQxMTRcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxMTRcIiBkYXRhLWVuZD1cIjQxMjVcIj4wLjAyMiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTI1XCIgZGF0YS1lbmQ9XCI0MTMyXCI+MC4wMjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTMyXCIgZGF0YS1lbmQ9XCI0MTQzXCI+MS4xNSBtbTxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjQxNDRcIiBkYXRhLWVuZD1cIjQyMDlcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNDE0NFwiIGRhdGEtZW5kPVwiNDE1NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjEuMDIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNTVcIiBkYXRhLWVuZD1cIjQxNjFcIj4wLjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDE2MVwiIGRhdGEtZW5kPVwiNDE3MlwiPjEuMTIyIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNzJcIiBkYXRhLWVuZD1cIjQxNzlcIj4xLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjQxNzlcIiBkYXRhLWVuZD1cIjQxOTBcIj4wLjAyMiBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI0MTkwXCIgZGF0YS1lbmQ9XCI0MTk4XCI+MC4wMjU8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNDE5OFwiIGRhdGEtZW5kPVwiNDIwOVwiPjEuMTAgbW08XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxociBkYXRhLXN0YXJ0PVwiNDIxMVwiIGRhdGEtZW5kPVwiNDIxNFwiIFwvPlxuPGgzIGRhdGEtc3RhcnQ9XCI0MjE2XCIgZGF0YS1lbmQ9XCI0MjY2XCI+UGVyc29uYWwgdmlldyBvbiBzZXR0aW5nIHRoZSBzdGVwLXVwIHRocmVzaG9sZDxcL2gzPlxuPHAgZGF0YS1zdGFydD1cIjQyNjdcIiBkYXRhLWVuZD1cIjQ1NzVcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI0MjY3XCIgZGF0YS1lbmQ9XCI0Mjg1XCI+UHJvcyBhbmQgY29uczo8XC9zdHJvbmc+IEFmdGVyIGNvbXBlbnNhdGlvbiwgaWYgdGhlIGZpbmFsIGhvbGUgaXMgYSBsaXR0bGUgbGFyZ2VyLCBhdCBsZWFzdCB0aGUgcGFydCBjYW4gYmUgaW5zZXJ0ZWQuIElmIHRoZSBob2xlIGlzIHRvbyBzbWFsbCwgdGhlIHBhcnQgY2Fubm90IGJlIGluc2VydGVkLiBTbyB3ZSB1c3VhbGx5IHNldCB0aGUgc3RlcC11cCB0aHJlc2hvbGQgdG8gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDQ3N1wiIGRhdGEtZW5kPVwiNDQ4NlwiPjIwIFx1MDBiNW08XC9zdHJvbmc+IGluc3RlYWQgb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDQ5OFwiIGRhdGEtZW5kPVwiNDUwN1wiPjI1IFx1MDBiNW08XC9zdHJvbmc+LiBUaGUgZXhhY3QgY2hvaWNlIHNob3VsZCBtYXRjaCBlYWNoIHByb2Nlc3MgYW5kIGNvbXBlbnNhdGlvbiB2YWx1ZS48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjQ1NzdcIiBkYXRhLWVuZD1cIjQ4NjJcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI0NTc3XCIgZGF0YS1lbmQ9XCI0NjE0XCI+Q29tYmluZWQgd2l0aCBjb21wZW5zYXRpb24gdmFsdWU6PFwvc3Ryb25nPiBGb3IgYm9hcmRzIHdpdGggSEFTTCB3aGVyZSBjb21wZW5zYXRpb24gaXMgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDY1OFwiIGRhdGEtZW5kPVwiNDY2OVwiPjAuMTUgbW08XC9zdHJvbmc+LCB5b3UgYWxyZWFkeSBcdTIwMWNvdmVyLWNvbXBlbnNhdGVcdTIwMWQgYSBiaXQgYW5kIHRoZSBmaW5hbCBob2xlcyB0ZW5kIHRvIGJlIHNsaWdodGx5IGxhcmdlLiBJbiB0aGF0IGNhc2UsIGEgc3RlcC11cCB0aHJlc2hvbGQgb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNDc5MVwiIGRhdGEtZW5kPVwiNDgwMFwiPjI1IFx1MDBiNW08XC9zdHJvbmc+IGNhbiBhbHNvIHdvcmsuIFVzZSB0aGUgXHUyMDFjbmVhcmVzdFx1MjAxZCBydWxlIHdoZW4gcGlja2luZyB0aGUgZHJpbGwuPFwvcD5cbjxociBkYXRhLXN0YXJ0PVwiNDg2NFwiIGRhdGEtZW5kPVwiNDg2N1wiIFwvPlxuPGgyIGRhdGEtc3RhcnQ9XCI0ODY5XCIgZGF0YS1lbmQ9XCI0OTQzXCI+My4gSG93IHRvIGVuc3VyZSBmaW5hbCBob2xlIHNpemUgbWVldHMgcmVxdWlyZW1lbnRzIGFmdGVyIGNvbXBlbnNhdGlvbj88XC9oMj5cbjxoMyBkYXRhLXN0YXJ0PVwiNDk0NVwiIGRhdGEtZW5kPVwiNDk4M1wiPk1ldGhvZCAxOiBCdXkgc3BlY2lhbCBkcmlsbCBiaXRzPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiNDk4NFwiIGRhdGEtZW5kPVwiNTIwN1wiPlN0YW5kYXJkIGRyaWxsIGluY3JlbWVudCBpcyA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1MDEyXCIgZGF0YS1lbmQ9XCI1MDIxXCI+NTAgXHUwMGI1bTxcL3N0cm9uZz4gKDAuMDUgbW0gc3RlcHMgbGlrZSAxLjAwLCAxLjA1LCAxLjEwLCAxLjE1IG1tKS4gV2l0aCBhIFBUSCB0b2xlcmFuY2Ugb2YgXHUwMGIxMyBtaWwsIGEgNTAgXHUwMGI1bSBkcmlsbCBzZXQgY2FuIGNvdmVyIHRoZSB0b2xlcmFuY2UuIElmIHRoZSB0b2xlcmFuY2UgaXMgc21hbGxlciB0aGFuIHRoYXQsIHVzZSBzcGVjaWFsIGRyaWxsIGJpdHMuPFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI1MjA5XCIgZGF0YS1lbmQ9XCI1MzUyXCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTIwOVwiIGRhdGEtZW5kPVwiNTIyMlwiPkV4YW1wbGUgMTxcL3N0cm9uZz4gXHUyMDE0IENvbXBhcmUgNTAgXHUwMGI1bSB2cyAyNSBcdTAwYjVtIGluY3JlbWVudHM6PGJyIGRhdGEtc3RhcnQ9XCI1MjU5XCIgZGF0YS1lbmQ9XCI1MjYyXCIgXC8+T3JpZ2luYWwgaG9sZSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUyNzhcIiBkYXRhLWVuZD1cIjUyOTBcIj4wLjkyMiBtbTxcL3N0cm9uZz4sIGNvbXBlbnNhdGlvbiA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUzMDdcIiBkYXRhLWVuZD1cIjUzMThcIj4wLjEwIG1tPFwvc3Ryb25nPiwgY29tcGVuc2F0ZWQgc2l6ZSA9IDxzdHJvbmcgZGF0YS1zdGFydD1cIjUzMzlcIiBkYXRhLWVuZD1cIjUzNTFcIj4xLjAyMiBtbTxcL3N0cm9uZz4uPFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCI1MzU0XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjUzNTRcIiBkYXRhLWVuZD1cIjU0MjJcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiNTM1NFwiIGRhdGEtZW5kPVwiNTQyMlwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI1MzU0XCIgZGF0YS1lbmQ9XCI1MzY1XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+T3JpZ2luYWw8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTM2NVwiIGRhdGEtZW5kPVwiNTM4MFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkNvbXBlbnNhdGlvbjxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1MzgwXCIgZGF0YS1lbmQ9XCI1Mzk0XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0ZWQ8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTM5NFwiIGRhdGEtZW5kPVwiNTQwNlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkluY3JlbWVudDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1NDA2XCIgZGF0YS1lbmQ9XCI1NDIyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+RHJpbGwgY2hvc2VuPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI1NDUwXCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dHIgZGF0YS1zdGFydD1cIjU0NTBcIiBkYXRhLWVuZD1cIjU0OTZcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiNTQ1MFwiIGRhdGEtZW5kPVwiNTQ1OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjAuOTIyPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU0NThcIiBkYXRhLWVuZD1cIjU0NjVcIj4wLjEwPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU0NjVcIiBkYXRhLWVuZD1cIjU0NzNcIj4xLjAyMjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NDczXCIgZGF0YS1lbmQ9XCI1NDg4XCI+MC4wNSAoNTAgXHUwMGI1bSk8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTQ4OFwiIGRhdGEtZW5kPVwiNTQ5NlwiPjEuMDU8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCI1NDk3XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+XG48dGQgZGF0YS1zdGFydD1cIjU0OTdcIiBkYXRhLWVuZD1cIjU1MDVcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjkyMjxcL3RkPlxuPHRkIGRhdGEtc3RhcnQ9XCI1NTA1XCIgZGF0YS1lbmQ9XCI1NTEyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NTEyXCIgZGF0YS1lbmQ9XCI1NTIwXCI+MS4wMjI8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTUyMFwiIGRhdGEtZW5kPVwiNTUzNlwiPjAuMDI1ICgyNSBcdTAwYjVtKTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1NTM2XCIgZGF0YS1lbmQ9XCI1NTQ1XCI+MS4wMjU8XC90ZD5cbjxcL3RyPlxuPFwvdGJvZHk+XG48XC90YWJsZT5cbjxcL2Rpdj5cbjxcL2Rpdj5cbjxwIGRhdGEtc3RhcnQ9XCI1NTQ3XCIgZGF0YS1lbmQ9XCI1Njg5XCI+RGlmZmVyZW5jZTogMS4wNTAgXHUyMjEyIDEuMDIyID0gMC4wMjggbW07IDEuMDI1IFx1MjIxMiAxLjAyMiA9IDAuMDAzIG1tLiBUaGUgc21hbGxlciBkaWZmZXJlbmNlIGlzIGJldHRlciwgc28gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTY0OFwiIGRhdGEtZW5kPVwiNTY2MFwiPjEuMDI1IG1tPFwvc3Ryb25nPiAoMjUgXHUwMGI1bSBpbmNyZW1lbnQpIGlzIGJldHRlci48XC9wPlxuPHAgZGF0YS1zdGFydD1cIjU2OTFcIiBkYXRhLWVuZD1cIjU4MThcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI1NjkxXCIgZGF0YS1lbmQ9XCI1NzA0XCI+RXhhbXBsZSAyPFwvc3Ryb25nPiBcdTIwMTQgNTAgXHUwMGI1bSB2cyBzcGVjaWFsIGRyaWxsOjxiciBkYXRhLXN0YXJ0PVwiNTczMFwiIGRhdGEtZW5kPVwiNTczM1wiIFwvPk9yaWdpbmFsIGhvbGUgPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1NzQ5XCIgZGF0YS1lbmQ9XCI1NzYxXCI+MC42MTEgbW08XC9zdHJvbmc+LCBjb21wZW5zYXRpb24gPSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI1Nzc4XCIgZGF0YS1lbmQ9XCI1Nzg5XCI+MC4xMCBtbTxcL3N0cm9uZz4sIGNvbXBlbnNhdGVkID0gPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNTgwNVwiIGRhdGEtZW5kPVwiNTgxN1wiPjAuNzExIG1tPFwvc3Ryb25nPi48XC9wPlxuPGRpdiBjbGFzcz1cIlR5YWdHV190YWJsZUNvbnRhaW5lclwiPlxuPGRpdiBjbGFzcz1cImdyb3VwIFR5YWdHV190YWJsZVdyYXBwZXIgZmxleCB3LWZpdCBmbGV4LWNvbC1yZXZlcnNlXCIgdGFiaW5kZXg9XCItMVwiPlxuPHRhYmxlIGNsYXNzPVwidy1maXQgbWluLXctKC0tdGhyZWFkLWNvbnRlbnQtd2lkdGgpXCIgZGF0YS1zdGFydD1cIjU4MjBcIiBkYXRhLWVuZD1cIjYwMThcIj5cbjx0aGVhZCBkYXRhLXN0YXJ0PVwiNTgyMFwiIGRhdGEtZW5kPVwiNTg5NVwiPlxuPHRyIGRhdGEtc3RhcnQ9XCI1ODIwXCIgZGF0YS1lbmQ9XCI1ODk1XCI+XG48dGggZGF0YS1zdGFydD1cIjU4MjBcIiBkYXRhLWVuZD1cIjU4MzFcIiBkYXRhLWNvbC1zaXplPVwic21cIj5PcmlnaW5hbDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1ODMxXCIgZGF0YS1lbmQ9XCI1ODQ2XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Q29tcGVuc2F0aW9uPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjU4NDZcIiBkYXRhLWVuZD1cIjU4NjBcIiBkYXRhLWNvbC1zaXplPVwic21cIj5Db21wZW5zYXRlZDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI1ODYwXCIgZGF0YS1lbmQ9XCI1ODc5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SW5jcmVtZW50IFwvIFR5cGU8XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiNTg3OVwiIGRhdGEtZW5kPVwiNTg5NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkRyaWxsIGNob3NlbjxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keSBkYXRhLXN0YXJ0PVwiNTkyM1wiIGRhdGEtZW5kPVwiNjAxOFwiPlxuPHRyIGRhdGEtc3RhcnQ9XCI1OTIzXCIgZGF0YS1lbmQ9XCI1OTY5XCI+XG48dGQgZGF0YS1zdGFydD1cIjU5MjNcIiBkYXRhLWVuZD1cIjU5MzFcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjYxMTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1OTMxXCIgZGF0YS1lbmQ9XCI1OTM4XCI+MC4xMDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI1OTM4XCIgZGF0YS1lbmQ9XCI1OTQ2XCI+MC43MTE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk0NlwiIGRhdGEtZW5kPVwiNTk2MVwiPjAuMDUgKDUwIFx1MDBiNW0pPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU5NjFcIiBkYXRhLWVuZD1cIjU5NjlcIj4wLjcwPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiNTk3MFwiIGRhdGEtZW5kPVwiNjAxOFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCI1OTcwXCIgZGF0YS1lbmQ9XCI1OTc4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC42MTE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk3OFwiIGRhdGEtZW5kPVwiNTk4NVwiPjAuMTA8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiNTk4NVwiIGRhdGEtZW5kPVwiNTk5M1wiPjAuNzExPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjU5OTNcIiBkYXRhLWVuZD1cIjYwMDlcIj5TcGVjaWFsIGRyaWxsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjYwMDlcIiBkYXRhLWVuZD1cIjYwMThcIj4wLjcxMTxcL3RkPlxuPFwvdHI+XG48XC90Ym9keT5cbjxcL3RhYmxlPlxuPFwvZGl2PlxuPFwvZGl2PlxuPHAgZGF0YS1zdGFydD1cIjYwMjBcIiBkYXRhLWVuZD1cIjYxNjFcIj5EaWZmZXJlbmNlOiAwLjcwMCBcdTIyMTIgMC43MTEgPSBcdTIyMTIwLjAxMSBtbTsgMC43MTEgXHUyMjEyIDAuNzExID0gMC4wMDAgbW0uIFRoZSBzbWFsbGVyIGRpZmZlcmVuY2UgaXMgYmV0dGVyLiBTbyB0aGUgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiNjEyNlwiIGRhdGEtZW5kPVwiNjE1MlwiPjAuNzExIG1tIHNwZWNpYWwgZHJpbGw8XC9zdHJvbmc+IGlzIGJlc3QuPFwvcD5cbjxoMyBkYXRhLXN0YXJ0PVwiNjE2M1wiIGRhdGEtZW5kPVwiNjIwNlwiPk1ldGhvZCAyOiBJbXByb3ZlIHByb2Nlc3MgYW5kIGVxdWlwbWVudDxcL2gzPlxuPHVsIGRhdGEtc3RhcnQ9XCI2MjA3XCIgZGF0YS1lbmQ9XCI2NzUyXCI+XG48bGkgZGF0YS1zdGFydD1cIjYyMDdcIiBkYXRhLWVuZD1cIjYyOTZcIj5cbjxwIGRhdGEtc3RhcnQ9XCI2MjA5XCIgZGF0YS1lbmQ9XCI2Mjk2XCI+QWRkIGEgc2Vjb25kIGJvYXJkIHBsYXRpbmcgc3RlcCB0byByZWR1Y2UgdW5ldmVuIHRoaWNrbmVzcyBmcm9tIHBhdHRlcm4gZGlzdHJpYnV0aW9uLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNjI5N1wiIGRhdGEtZW5kPVwiNjM5NVwiPlxuPHAgZGF0YS1zdGFydD1cIjYyOTlcIiBkYXRhLWVuZD1cIjYzOTVcIj5Vc2UgbmVnYXRpdmUgcGhvdG8gZGlyZWN0LWV0Y2hpbmcgYW5kIHBsYXRlIHRoZSB3aG9sZSBib2FyZCB0byByZWR1Y2UgdW5ldmVuIGNvcHBlciB0aGlja25lc3MuPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI2Mzk2XCIgZGF0YS1lbmQ9XCI2NTM4XCI+XG48cCBkYXRhLXN0YXJ0PVwiNjM5OFwiIGRhdGEtZW5kPVwiNjUzOFwiPkxvd2VyIHRoZSBjdXJyZW50IGRlbnNpdHkgKHR5cGljYWwgaXMgMTkgQVNGKTsgc2xpZ2h0bHkgbG93ZXIgY3VycmVudCBkZW5zaXR5IGNhbiBpbXByb3ZlIHBsYXRpbmcgdW5pZm9ybWl0eSBidXQgd2lsbCBleHRlbmQgcGxhdGluZyB0aW1lLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNjUzOVwiIGRhdGEtZW5kPVwiNjc1MlwiPlxuPHAgZGF0YS1zdGFydD1cIjY1NDFcIiBkYXRhLWVuZD1cIjY3NTJcIj5VcGdyYWRlIHRvIGEgaG9yaXpvbnRhbCBwbGF0aW5nIGxpbmUuIFZlcnRpY2FsIHBsYXRpbmcgbGluZXMgb2Z0ZW4gZ2l2ZSB0aGlja2VyIGNvcHBlciBhdCB0aGUgaG9sZSBlZGdlIGFuZCB0aGlubmVyIGNvcHBlciBhdCB0aGUgaG9sZSBjZW50ZXIgZm9yIGhpZ2ggYXNwZWN0LXJhdGlvIGhvbGVzLiBBIGhvcml6b250YWwgbGluZSBjYW4gcmVkdWNlIHRoYXQgaXNzdWUuPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aDMgZGF0YS1zdGFydD1cIjY3NTRcIiBkYXRhLWVuZD1cIjY3OTBcIj5NZXRob2QgMzogSW1wcm92ZSBDQU0gc3RyYXRlZ2llczxcL2gzPlxuPHVsIGRhdGEtc3RhcnQ9XCI2NzkxXCIgZGF0YS1lbmQ9XCI3ODg1XCI+XG48bGkgZGF0YS1zdGFydD1cIjY3OTFcIiBkYXRhLWVuZD1cIjcwMTlcIj5cbjxwIGRhdGEtc3RhcnQ9XCI2NzkzXCIgZGF0YS1lbmQ9XCI3MDE5XCI+Rm9yIGhvbGVzIGluIGlzb2xhdGVkIGNvcHBlciBhcmVhcywgYXBwbHkgb25lIGV4dHJhIGluY3JlbWVudCBjb21wZW5zYXRpb24uIElzb2xhdGVkIGFyZWFzIGhhdmUgbGVzcyBjb3BwZXIsIHNvIGR1cmluZyBwbGF0aW5nIHRoZXkgZ2V0IGhpZ2hlciBsb2NhbCBjdXJyZW50IGRlbnNpdHkgYW5kIG1vcmUgY29wcGVyIHRoaWNrbmVzczsgZXh0cmEgY29tcGVuc2F0aW9uIG9mZnNldHMgdGhhdC48XC9wPlxuPFwvbGk+XG48bGkgZGF0YS1zdGFydD1cIjcwMjBcIiBkYXRhLWVuZD1cIjczNjFcIj5cbjxwIGRhdGEtc3RhcnQ9XCI3MDIyXCIgZGF0YS1lbmQ9XCI3MzYxXCI+Rm9yIGRlc2lnbnMgd2l0aCBkZW5zZSB0cmFjZXMgb24gb25lIHNpZGUgYW5kIHNwYXJzZSBvbiB0aGUgb3RoZXIgKGZvciBleGFtcGxlLCBhIHBvd2VyIGJvYXJkKSwgcGxhY2UgdGhlIHNwYXJzZSBzaWRlIGlud2FyZCBhbmQgdGhlIGRlbnNlIHNpZGUgb3V0d2FyZCwgYW5kIHVzZSByZXZlcnNlZCBwYW5lbGl6YXRpb24uIER1cmluZyBwYW5lbCBwbGF0aW5nLCBhcmVhcyBuZWFyIHRoZSBib2FyZCBlZGdlIGdldCBoaWdoZXIgY3VycmVudCBkZW5zaXR5IGFuZCB0aGlja2VyIHBsYXRpbmcuIFJldmVyc2VkIHBhbmVsaXphdGlvbiBoZWxwcyBiYWxhbmNlIHBsYXRpbmcgZGlzdHJpYnV0aW9uLjxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiNzM2MlwiIGRhdGEtZW5kPVwiNzYxN1wiPlxuPHAgZGF0YS1zdGFydD1cIjczNjRcIiBkYXRhLWVuZD1cIjc2MTdcIj5XaGVuIFRPUCBhbmQgQk9UVE9NIGNvcHBlciBhcmVhIGRpZmZlciBhIGxvdCwgdXNlIHBvc2l0aXZlXC9uZWdhdGl2ZSAoeWluLXlhbmcpIHBhbmVsaW5nLiBVbmV2ZW4gY29wcGVyIGFyZWEgY2F1c2VzIFx1MjAxY2JlbGwtbW91dGhcdTIwMWQgdmlhczsgdGhlIHRoaWNrZXIgdGhlIGJvYXJkIGFuZCB0aGUgbW9yZSBjb3BwZXIsIHRoZSB3b3JzZSB0aGUgZWZmZWN0OyB5aW4teWFuZyBwYW5lbGluZyBoZWxwcyBiYWxhbmNlIGNvcHBlciBkaXN0cmlidXRpb24uPFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI3NjE4XCIgZGF0YS1lbmQ9XCI3ODg1XCI+XG48cCBkYXRhLXN0YXJ0PVwiNzYyMFwiIGRhdGEtZW5kPVwiNzg4NVwiPkZvciBpc29sYXRlZC1hcmVhIGhvbGVzIG5lYXIgdGhlIGJvYXJkIGVkZ2Ugb3Igc2xvdHMsIGFkZCBjb3BwZXIgXHUyMDFjcGljay11cFx1MjAxZCBhcmVhcyBvciBjb3BwZXIgcGFkcyBuZWFyIHRoZSBlZGdlIG9yIHNsb3QuIElzb2xhdGVkIGhvbGVzIGNhbiBnZXQgdG9vIG11Y2ggcGxhdGluZyB0aGlja25lc3MgYW5kIGJlY29tZSB0b28gc21hbGw7IGV4dHJhIGNvcHBlciBuZWFyIHRoZW0gcmVkdWNlcyBsb2NhbCBjdXJyZW50IGRlbnNpdHkgYW5kIGJhbGFuY2VzIHBsYXRpbmcuPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aHIgZGF0YS1zdGFydD1cIjc4ODdcIiBkYXRhLWVuZD1cIjc4OTBcIiBcLz5cbjxoMiBkYXRhLXN0YXJ0PVwiNzg5MlwiIGRhdGEtZW5kPVwiNzk1MlwiPjQuIEhvdyBtdWNoIGNvbXBlbnNhdGlvbiBpcyBuZWVkZWQgYW5kIGhvdyBpcyBpdCBkZXJpdmVkPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjc5NTRcIiBkYXRhLWVuZD1cIjgwODdcIj5Db21wZW5zYXRpb24gdmFsdWVzIGNvbWUgZnJvbSBwcm9jZXNzIHRlc3RzLiBCZWxvdyBpcyBvbmUgc2V0IG9mIG1lYXN1cmVkIGhvbGUgc2l6ZSBjaGFuZ2VzIGFmdGVyIHZhcmlvdXMgc3RlcHMgKGRhdGEgZnJvbSBhIHJlcG9ydCk6PFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI4MDg5XCIgZGF0YS1lbmQ9XCI4MjEyXCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODA4OVwiIGRhdGEtZW5kPVwiODEwNlwiPlByb2Nlc3MgZmxvdzo8XC9zdHJvbmc+IG1lY2hhbmljYWwgZHJpbGxpbmcgXHUyMTkyIGltbWVyc2lvbiBjb3BwZXIgXHUyMTkyIGVsZWN0cm9wbGF0aW5nIFx1MjE5MiBwYXR0ZXJuIHRyYW5zZmVyIFx1MjE5MiBldGNoIFx1MjE5MiBBT0kgXHUyMTkyIHdldCBmaWxtIFx1MjE5MiBIQVNMPFwvcD5cbjxwIGRhdGEtc3RhcnQ9XCI4MjE0XCIgZGF0YS1lbmQ9XCI4MjM5XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODIxNFwiIGRhdGEtZW5kPVwiODIzN1wiPlByb2Nlc3MgcGFyYW1ldGVyczo8XC9zdHJvbmc+PFwvcD5cbjx1bCBkYXRhLXN0YXJ0PVwiODI0MFwiIGRhdGEtZW5kPVwiODUxNVwiPlxuPGxpIGRhdGEtc3RhcnQ9XCI4MjQwXCIgZGF0YS1lbmQ9XCI4MzMwXCI+XG48cCBkYXRhLXN0YXJ0PVwiODI0MlwiIGRhdGEtZW5kPVwiODMzMFwiPkRyaWxsOiBkcmlsbCBiaXQgc2l6ZSAwLjk1IG1tLCByZS1zaGFycGVuXC9yZWdyaW5kIDMgdGltZXMsIGRyaWxsIGNvbXBlbnNhdGlvbiAwLjE1IG1tOzxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiODMzMVwiIGRhdGEtZW5kPVwiODM4NlwiPlxuPHAgZGF0YS1zdGFydD1cIjgzMzNcIiBkYXRhLWVuZD1cIjgzODZcIj5QbGF0aW5nOiBjb3BwZXIgdGhpY2tuZXNzIFx1MjI2NSAxOCBcdTAwYjVtLCBhdmVyYWdlIFx1MjI2NSAyMCBcdTAwYjVtOzxcL3A+XG48XC9saT5cbjxsaSBkYXRhLXN0YXJ0PVwiODM4N1wiIGRhdGEtZW5kPVwiODQ1NlwiPlxuPHAgZGF0YS1zdGFydD1cIjgzODlcIiBkYXRhLWVuZD1cIjg0NTZcIj5IQVNMOiBmaW5hbCBob2xlIHJlcXVpcmVtZW50IDAuODAgbW0sIHRvbGVyYW5jZSBcdTAwYjEwLjA4IG1tICgzIG1pbCk7PFwvcD5cbjxcL2xpPlxuPGxpIGRhdGEtc3RhcnQ9XCI4NDU3XCIgZGF0YS1lbmQ9XCI4NTE1XCI+XG48cCBkYXRhLXN0YXJ0PVwiODQ1OVwiIGRhdGEtZW5kPVwiODUxNVwiPlRlc3Q6IDEwIHBhbmVscywgY29ybmVyIHRyaW1tZWQsIGJvYXJkIHRoaWNrbmVzcyAyLjAgbW0uPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48aDMgZGF0YS1zdGFydD1cIjg1MTdcIiBkYXRhLWVuZD1cIjg1NDZcIj5Ib2xlIHNpemUgY2hhbmdlcyBieSBzdGVwPFwvaDM+XG48cCBkYXRhLXN0YXJ0PVwiODU0OFwiIGRhdGEtZW5kPVwiODU5M1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjg1NDhcIiBkYXRhLWVuZD1cIjg1NjlcIj4xKSBBZnRlciBkcmlsbGluZzxcL3N0cm9uZz4gXHUyMDE0IGhvbGUgc2l6ZXMgbWVhc3VyZWQ8XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI4NTk0XCIgZGF0YS1lbmQ9XCI4Nzk1XCI+XG48bGkgZGF0YS1zdGFydD1cIjg1OTRcIiBkYXRhLWVuZD1cIjg3OTVcIj5cbjxwIGRhdGEtc3RhcnQ9XCI4NTk2XCIgZGF0YS1lbmQ9XCI4Nzk1XCI+VG90YWwgMTkyMCBob2xlcyB0ZXN0ZWQgKDEwIHBhbmVscywgMzg0IGhvbGVzIGVhY2gpLiBTYW1wbGU6IDIwMCBob2xlcyAoMjAgcGVyIHBhbmVsKS4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiODY5NVwiIGRhdGEtZW5kPVwiODcxMVwiPjAuOTNcdTIwMTMwLjk0IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI4NzIxXCIgZGF0YS1lbmQ9XCI4NzMzXCI+MC45MzEgbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiODczNFwiIGRhdGEtZW5kPVwiODczN1wiIFwvPihUaGVuIGEgbG9uZyBsaXN0IG9mIHNhbXBsZWQgdmFsdWVzLCBtb3N0bHkgMC45MyBvciAwLjk0Lik8XC9wPlxuPFwvbGk+XG48XC91bD5cbjxwIGRhdGEtc3RhcnQ9XCI4Nzk3XCIgZGF0YS1lbmQ9XCI4ODQ4XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiODc5N1wiIGRhdGEtZW5kPVwiODg0NlwiPjIpIEFmdGVyIHBhdHRlcm5lZCBwbGF0aW5nIFx1MjAxNCBjb3BwZXIgdGhpY2tuZXNzPFwvc3Ryb25nPjxcL3A+XG48dWwgZGF0YS1zdGFydD1cIjg4NDlcIiBkYXRhLWVuZD1cIjg5OTlcIj5cbjxsaSBkYXRhLXN0YXJ0PVwiODg0OVwiIGRhdGEtZW5kPVwiODk5OVwiPlxuPHAgZGF0YS1zdGFydD1cIjg4NTFcIiBkYXRhLWVuZD1cIjg5OTlcIj5Gb3IgZWFjaCBwYW5lbCwgdGVzdCAxMCBob2xlcy4gQ29wcGVyIHRoaWNrbmVzcyByYW5nZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI4OTA1XCIgZGF0YS1lbmQ9XCI4OTE3XCI+MThcdTIwMTMzMSBcdTAwYjVtPFwvc3Ryb25nPiwgbWVldGluZyBcdTIyNjUxOCBcdTAwYjVtIGFuZCBhdmVyYWdlIFx1MjI2NTIwIFx1MDBiNW0uPGJyIGRhdGEtc3RhcnQ9XCI4OTUzXCIgZGF0YS1lbmQ9XCI4OTU2XCIgXC8+KFRoZW4gbWFueSBzYW1wbGUgY29wcGVyIHRoaWNrbmVzcyB2YWx1ZXMuKTxcL3A+XG48XC9saT5cbjxcL3VsPlxuPHAgZGF0YS1zdGFydD1cIjkwMDFcIiBkYXRhLWVuZD1cIjkwNDVcIj48c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MDAxXCIgZGF0YS1lbmQ9XCI5MDQzXCI+MykgQWZ0ZXIgcGF0dGVybmVkIHBsYXRpbmcgXHUyMDE0IGhvbGUgc2l6ZTxcL3N0cm9uZz48XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI5MDQ2XCIgZGF0YS1lbmQ9XCI5MTc2XCI+XG48bGkgZGF0YS1zdGFydD1cIjkwNDZcIiBkYXRhLWVuZD1cIjkxNzZcIj5cbjxwIGRhdGEtc3RhcnQ9XCI5MDQ4XCIgZGF0YS1lbmQ9XCI5MTc2XCI+VG90YWwgMTkyMCBob2xlcywgc2FtcGxlIDIwMC4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTA5MFwiIGRhdGEtZW5kPVwiOTEwNlwiPjAuODRcdTIwMTMwLjg4IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MTE2XCIgZGF0YS1lbmQ9XCI5MTI4XCI+MC44NTggbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiOTEyOVwiIGRhdGEtZW5kPVwiOTEzMlwiIFwvPihUaGVuIG1hbnkgc2FtcGxlIHZhbHVlcywgbW9zdGx5IDAuODVcdTIwMTMwLjg4Lik8XC9wPlxuPFwvbGk+XG48XC91bD5cbjxwIGRhdGEtc3RhcnQ9XCI5MTc4XCIgZGF0YS1lbmQ9XCI5MjA5XCI+PHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTE3OFwiIGRhdGEtZW5kPVwiOTE5NVwiPjQpIEFmdGVyIEhBU0w8XC9zdHJvbmc+IFx1MjAxNCBob2xlIHNpemU8XC9wPlxuPHVsIGRhdGEtc3RhcnQ9XCI5MjEwXCIgZGF0YS1lbmQ9XCI5MzIyXCI+XG48bGkgZGF0YS1zdGFydD1cIjkyMTBcIiBkYXRhLWVuZD1cIjkzMjJcIj5cbjxwIGRhdGEtc3RhcnQ9XCI5MjEyXCIgZGF0YS1lbmQ9XCI5MzIyXCI+VG90YWwgMTkyMCBob2xlcywgc2FtcGxlIDIwMC4gSG9sZSByYW5nZTogPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTI1NFwiIGRhdGEtZW5kPVwiOTI3MFwiPjAuODJcdTIwMTMwLjg2IG1tPFwvc3Ryb25nPiwgYXZlcmFnZSA8c3Ryb25nIGRhdGEtc3RhcnQ9XCI5MjgwXCIgZGF0YS1lbmQ9XCI5MjkyXCI+MC44MzYgbW08XC9zdHJvbmc+LjxiciBkYXRhLXN0YXJ0PVwiOTI5M1wiIGRhdGEtZW5kPVwiOTI5NlwiIFwvPihUaGVuIG1hbnkgc2FtcGxlIHZhbHVlcy4pPFwvcD5cbjxcL2xpPlxuPFwvdWw+XG48cCBkYXRhLXN0YXJ0PVwiOTMyNFwiIGRhdGEtZW5kPVwiOTM0MFwiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjkzMjRcIiBkYXRhLWVuZD1cIjkzNDBcIj5UZXN0IHN1bW1hcnk8XC9zdHJvbmc+PFwvcD5cbjxkaXYgY2xhc3M9XCJUeWFnR1dfdGFibGVDb250YWluZXJcIj5cbjxkaXYgY2xhc3M9XCJncm91cCBUeWFnR1dfdGFibGVXcmFwcGVyIGZsZXggdy1maXQgZmxleC1jb2wtcmV2ZXJzZVwiIHRhYmluZGV4PVwiLTFcIj5cbjx0YWJsZSBjbGFzcz1cInctZml0IG1pbi13LSgtLXRocmVhZC1jb250ZW50LXdpZHRoKVwiIGRhdGEtc3RhcnQ9XCI5MzQyXCIgZGF0YS1lbmQ9XCI5NTMxXCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjkzNDJcIiBkYXRhLWVuZD1cIjkzNzhcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTM0MlwiIGRhdGEtZW5kPVwiOTM3OFwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzQyXCIgZGF0YS1lbmQ9XCI5MzQ5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+U3RlcDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzQ5XCIgZGF0YS1lbmQ9XCI5MzYyXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SG9sZSByYW5nZTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5MzYyXCIgZGF0YS1lbmQ9XCI5Mzc4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QXZlcmFnZSBob2xlPFwvdGg+XG48XC90cj5cbjxcL3RoZWFkPlxuPHRib2R5IGRhdGEtc3RhcnQ9XCI5Mzk1XCIgZGF0YS1lbmQ9XCI5NTMxXCI+XG48dHIgZGF0YS1zdGFydD1cIjkzOTVcIiBkYXRhLWVuZD1cIjk0MzlcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiOTM5NVwiIGRhdGEtZW5kPVwiOTQxMlwiIGRhdGEtY29sLXNpemU9XCJzbVwiPkFmdGVyIGRyaWxsaW5nPFwvdGQ+XG48dGQgZGF0YS1zdGFydD1cIjk0MTJcIiBkYXRhLWVuZD1cIjk0MjdcIiBkYXRhLWNvbC1zaXplPVwic21cIj4wLjkzXHUyMDEzMC45NCBtbTxcL3RkPlxuPHRkIGRhdGEtc3RhcnQ9XCI5NDI3XCIgZGF0YS1lbmQ9XCI5NDM5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MC45MzEgbW08XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCI5NDQwXCIgZGF0YS1lbmQ9XCI5NDkwXCI+XG48dGQgZGF0YS1zdGFydD1cIjk0NDBcIiBkYXRhLWVuZD1cIjk0NjNcIiBkYXRhLWNvbC1zaXplPVwic21cIj5BZnRlciBjb3BwZXIgcGxhdGluZzxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI5NDYzXCIgZGF0YS1lbmQ9XCI5NDc4XCI+MC44NFx1MjAxMzAuODggbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiOTQ3OFwiIGRhdGEtZW5kPVwiOTQ5MFwiPjAuODU4IG1tPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTQ5MVwiIGRhdGEtZW5kPVwiOTUzMVwiPlxuPHRkIGRhdGEtc3RhcnQ9XCI5NDkxXCIgZGF0YS1lbmQ9XCI5NTA0XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QWZ0ZXIgSEFTTDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCI5NTA0XCIgZGF0YS1lbmQ9XCI5NTE5XCI+MC44Mlx1MjAxMzAuODYgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiOTUxOVwiIGRhdGEtZW5kPVwiOTUzMVwiPjAuODM2IG1tPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+XG48XC9kaXY+XG48XC9kaXY+XG48cCBkYXRhLXN0YXJ0PVwiOTUzM1wiIGRhdGEtZW5kPVwiOTcyM1wiPjxzdHJvbmcgZGF0YS1zdGFydD1cIjk1MzNcIiBkYXRhLWVuZD1cIjk1NDhcIj5Db25jbHVzaW9uOjxcL3N0cm9uZz4gRm9yIEhBU0wgYm9hcmRzIHRoZSBkcmlsbCBjb21wZW5zYXRpb24gb2YgPHN0cm9uZyBkYXRhLXN0YXJ0PVwiOTU5MVwiIGRhdGEtZW5kPVwiOTYwMlwiPjAuMTUgbW08XC9zdHJvbmc+IGlzIGFuIFx1MjAxY292ZXItY29tcGVuc2F0aW9uXHUyMDFkIGFuZCBjYXVzZXMgZmluYWwgaG9sZXMgdG8gYmUgbGFyZ2VyLiBUaGUgYmVzdCBjb21wZW5zYXRpb24gdmFsdWUgaW4gdGhpcyB0ZXN0IGlzIDxzdHJvbmcgZGF0YS1zdGFydD1cIjk3MTBcIiBkYXRhLWVuZD1cIjk3MjJcIj4wLjEyNSBtbTxcL3N0cm9uZz4uPFwvcD5cbjxociBkYXRhLXN0YXJ0PVwiOTcyNVwiIGRhdGEtZW5kPVwiOTcyOFwiIFwvPlxuPGgyPjUuIERyaWxsIGNvbXBlbnNhdGlvbiBjb2RlIGltcGxlbWVudGF0aW9uIChydWxlcyk8XC9oMj5cbjxvbCBkYXRhLXN0YXJ0PVwiOTc4NFwiIGRhdGEtZW5kPVwiOTgxN1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCI5Nzg0XCIgZGF0YS1lbmQ9XCI5ODE3XCI+XG48cCBkYXRhLXN0YXJ0PVwiOTc4N1wiIGRhdGEtZW5kPVwiOTgxN1wiPkNvbXBlbnNhdGlvbiBhbmQgc3RlcC11cCBydWxlczxcL3A+XG48XC9saT5cbjxcL29sPlxuPGRpdiBjbGFzcz1cIlR5YWdHV190YWJsZUNvbnRhaW5lclwiPlxuPGRpdiBjbGFzcz1cImdyb3VwIFR5YWdHV190YWJsZVdyYXBwZXIgZmxleCB3LWZpdCBmbGV4LWNvbC1yZXZlcnNlXCIgdGFiaW5kZXg9XCItMVwiPlxuPHRhYmxlIGNsYXNzPVwidy1maXQgbWluLXctKC0tdGhyZWFkLWNvbnRlbnQtd2lkdGgpXCIgZGF0YS1zdGFydD1cIjk4MTlcIiBkYXRhLWVuZD1cIjEwODQzXCI+XG48dGhlYWQgZGF0YS1zdGFydD1cIjk4MTlcIiBkYXRhLWVuZD1cIjk5NjhcIj5cbjx0ciBkYXRhLXN0YXJ0PVwiOTgxOVwiIGRhdGEtZW5kPVwiOTk2OFwiPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODE5XCIgZGF0YS1lbmQ9XCI5ODI4XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+QXNwZWN0PFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4MjhcIiBkYXRhLWVuZD1cIjk4NDRcIiBkYXRhLWNvbC1zaXplPVwic21cIj5GaW5pc2hlZCBob2xlPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4NDRcIiBkYXRhLWVuZD1cIjk4NjFcIiBkYXRhLWNvbC1zaXplPVwic21cIj5TdXJmYWNlIGZpbmlzaDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODYxXCIgZGF0YS1lbmQ9XCI5ODc5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+Qm9hcmQgdGhpY2tuZXNzPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk4NzlcIiBkYXRhLWVuZD1cIjk4OTlcIiBkYXRhLWNvbC1zaXplPVwic21cIj5TdGVwLXVwIHRocmVzaG9sZDxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5ODk5XCIgZGF0YS1lbmQ9XCI5OTIzXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+SWYgdmlhIGNvcHBlciAmbHQ7IDI2IFx1MDBiNW08XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiOTkyM1wiIGRhdGEtZW5kPVwiOTkzNFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjI2XHUyMDEzMzcgXHUwMGI1bTxcL3RoPlxuPHRoIGRhdGEtc3RhcnQ9XCI5OTM0XCIgZGF0YS1lbmQ9XCI5OTQ1XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+MzdcdTIwMTM0NyBcdTAwYjVtPFwvdGg+XG48dGggZGF0YS1zdGFydD1cIjk5NDVcIiBkYXRhLWVuZD1cIjk5NTZcIiBkYXRhLWNvbC1zaXplPVwic21cIj40N1x1MjAxMzY3IFx1MDBiNW08XC90aD5cbjx0aCBkYXRhLXN0YXJ0PVwiOTk1NlwiIGRhdGEtZW5kPVwiOTk2OFwiIGRhdGEtY29sLXNpemU9XCJzbVwiPjY3XHUyMDEzODYgXHUwMGI1bTxcL3RoPlxuPFwvdHI+XG48XC90aGVhZD5cbjx0Ym9keSBkYXRhLXN0YXJ0PVwiMTAwMThcIiBkYXRhLWVuZD1cIjEwODQzXCI+XG48dHIgZGF0YS1zdGFydD1cIjEwMDE4XCIgZGF0YS1lbmQ9XCIxMDE0NlwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDAxOFwiIGRhdGEtZW5kPVwiMTAwNDNcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1zdGFydD1cIjEwMDQzXCIgZGF0YS1lbmQ9XCIxMDA1NVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPlx1MjI2NCAxLjkwIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMDU1XCIgZGF0YS1lbmQ9XCIxMDA4NFwiPkhBU0wgKGxlYWRlZCBvciBsZWFkLWZyZWUpPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMDg0XCIgZGF0YS1lbmQ9XCIxMDA5NVwiPlx1MjI2NSAzLjUgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAwOTVcIiBkYXRhLWVuZD1cIjEwMTA1XCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEwNVwiIGRhdGEtZW5kPVwiMTAxMTNcIj41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDExM1wiIGRhdGEtZW5kPVwiMTAxMjFcIj42IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEyMVwiIGRhdGEtZW5kPVwiMTAxMjlcIj43IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEyOVwiIGRhdGEtZW5kPVwiMTAxMzdcIj44IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDEzN1wiIGRhdGEtZW5kPVwiMTAxNDZcIj45IG1pbDxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjEwMTQ3XCIgZGF0YS1lbmQ9XCIxMDI4NVwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDE0N1wiIGRhdGEtZW5kPVwiMTAxNzJcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMTcyXCIgZGF0YS1lbmQ9XCIxMDE4NFwiPlx1MjI2NCAxLjkwIG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMTg0XCIgZGF0YS1lbmQ9XCIxMDIxM1wiPkhBU0wgKGxlYWRlZCBvciBsZWFkLWZyZWUpPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjEzXCIgZGF0YS1lbmQ9XCIxMDIyNFwiPiZsdDsgMy41IG1tPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjI0XCIgZGF0YS1lbmQ9XCIxMDIzNFwiPjAuMDE5NTI8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAyMzRcIiBkYXRhLWVuZD1cIjEwMjQ0XCI+NC41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDI0NFwiIGRhdGEtZW5kPVwiMTAyNTRcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwMjU0XCIgZGF0YS1lbmQ9XCIxMDI2NFwiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAyNjRcIiBkYXRhLWVuZD1cIjEwMjc0XCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDI3NFwiIGRhdGEtZW5kPVwiMTAyODVcIj44LjUgbWlsPFwvdGQ+XG48XC90cj5cbjx0ciBkYXRhLXN0YXJ0PVwiMTAyODZcIiBkYXRhLWVuZD1cIjEwMzk1XCI+XG48dGQgZGF0YS1zdGFydD1cIjEwMjg2XCIgZGF0YS1lbmQ9XCIxMDMxMVwiIGRhdGEtY29sLXNpemU9XCJzbVwiPnRoaWNrbmVzcyByYXRpbyAmbHQ7IDEyOjE8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzMTFcIiBkYXRhLWVuZD1cIjEwMzIzXCI+XHUyMjY0IDEuOTAgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzMjNcIiBkYXRhLWVuZD1cIjEwMzQwXCI+T3RoZXIgZmluaXNoZXM8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzNDBcIiBkYXRhLWVuZD1cIjEwMzQ0XCI+XC88XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTAzNDRcIiBkYXRhLWVuZD1cIjEwMzU0XCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM1NFwiIGRhdGEtZW5kPVwiMTAzNjJcIj40IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM2MlwiIGRhdGEtZW5kPVwiMTAzNzBcIj41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM3MFwiIGRhdGEtZW5kPVwiMTAzNzhcIj42IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM3OFwiIGRhdGEtZW5kPVwiMTAzODZcIj43IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDM4NlwiIGRhdGEtZW5kPVwiMTAzOTVcIj44IG1pbDxcL3RkPlxuPFwvdHI+XG48dHIgZGF0YS1zdGFydD1cIjEwMzk2XCIgZGF0YS1lbmQ9XCIxMDUwNFwiPlxuPHRkIGRhdGEtc3RhcnQ9XCIxMDM5NlwiIGRhdGEtZW5kPVwiMTA0MjFcIiBkYXRhLWNvbC1zaXplPVwic21cIj50aGlja25lc3MgcmF0aW8gJmx0OyAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDIxXCIgZGF0YS1lbmQ9XCIxMDQzM1wiPiZndDsgMS45MCBtbTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQzM1wiIGRhdGEtZW5kPVwiMTA0NDBcIj5IQVNMPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDQwXCIgZGF0YS1lbmQ9XCIxMDQ0NFwiPlwvPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDQ0XCIgZGF0YS1lbmQ9XCIxMDQ1M1wiPjAuMDI0NjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQ1M1wiIGRhdGEtZW5kPVwiMTA0NjNcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDYzXCIgZGF0YS1lbmQ9XCIxMDQ3M1wiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA0NzNcIiBkYXRhLWVuZD1cIjEwNDgzXCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDQ4M1wiIGRhdGEtZW5kPVwiMTA0OTNcIj44LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNDkzXCIgZGF0YS1lbmQ9XCIxMDUwNFwiPjkuNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDUwNVwiIGRhdGEtZW5kPVwiMTA2MjRcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA1MDVcIiBkYXRhLWVuZD1cIjEwNTMwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvICZsdDsgMTI6MTxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDUzMFwiIGRhdGEtZW5kPVwiMTA1NDJcIj4mZ3Q7IDEuOTAgbW08XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NDJcIiBkYXRhLWVuZD1cIjEwNTU5XCI+T3RoZXIgZmluaXNoZXM8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NTlcIiBkYXRhLWVuZD1cIjEwNTYzXCI+XC88XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1NjNcIiBkYXRhLWVuZD1cIjEwNTczXCI+MC4wMTk1MjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDU3M1wiIGRhdGEtZW5kPVwiMTA1ODNcIj40LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNTgzXCIgZGF0YS1lbmQ9XCIxMDU5M1wiPjUuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA1OTNcIiBkYXRhLWVuZD1cIjEwNjAzXCI+Ni41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDYwM1wiIGRhdGEtZW5kPVwiMTA2MTNcIj43LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjEzXCIgZGF0YS1lbmQ9XCIxMDYyNFwiPjguNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDYyNVwiIGRhdGEtZW5kPVwiMTA3MzNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA2MjVcIiBkYXRhLWVuZD1cIjEwNjUwXCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvIFx1MjI2NSAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjUwXCIgZGF0YS1lbmQ9XCIxMDY2MlwiPmFsbCBob2xlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDY2MlwiIGRhdGEtZW5kPVwiMTA2NjlcIj5IQVNMPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjY5XCIgZGF0YS1lbmQ9XCIxMDY3M1wiPlwvPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjczXCIgZGF0YS1lbmQ9XCIxMDY4MlwiPjAuMDI0NjxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDY4MlwiIGRhdGEtZW5kPVwiMTA2OTJcIj41LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNjkyXCIgZGF0YS1lbmQ9XCIxMDcwMlwiPjYuNSBtaWw8XC90ZD5cbjx0ZCBkYXRhLWNvbC1zaXplPVwic21cIiBkYXRhLXN0YXJ0PVwiMTA3MDJcIiBkYXRhLWVuZD1cIjEwNzEyXCI+Ny41IG1pbDxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDcxMlwiIGRhdGEtZW5kPVwiMTA3MjJcIj44LjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNzIyXCIgZGF0YS1lbmQ9XCIxMDczM1wiPjkuNSBtaWw8XC90ZD5cbjxcL3RyPlxuPHRyIGRhdGEtc3RhcnQ9XCIxMDczNFwiIGRhdGEtZW5kPVwiMTA4NDNcIj5cbjx0ZCBkYXRhLXN0YXJ0PVwiMTA3MzRcIiBkYXRhLWVuZD1cIjEwNzU5XCIgZGF0YS1jb2wtc2l6ZT1cInNtXCI+dGhpY2tuZXNzIHJhdGlvIFx1MjI2NSAxMjoxPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwNzU5XCIgZGF0YS1lbmQ9XCIxMDc3MVwiPmFsbCBob2xlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc3MVwiIGRhdGEtZW5kPVwiMTA3ODhcIj5PdGhlciBmaW5pc2hlczxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc4OFwiIGRhdGEtZW5kPVwiMTA3OTJcIj5cLzxcL3RkPlxuPHRkIGRhdGEtY29sLXNpemU9XCJzbVwiIGRhdGEtc3RhcnQ9XCIxMDc5MlwiIGRhdGEtZW5kPVwiMTA4MDJcIj4wLjAxOTUyPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODAyXCIgZGF0YS1lbmQ9XCIxMDgxMFwiPjUgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODEwXCIgZGF0YS1lbmQ9XCIxMDgxOFwiPjYgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODE4XCIgZGF0YS1lbmQ9XCIxMDgyNlwiPjcgbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODI2XCIgZGF0YS1lbmQ9XCIxMDgzNFwiPjggbWlsPFwvdGQ+XG48dGQgZGF0YS1jb2wtc2l6ZT1cInNtXCIgZGF0YS1zdGFydD1cIjEwODM0XCIgZGF0YS1lbmQ9XCIxMDg0M1wiPjkgbWlsPFwvdGQ+XG48XC90cj5cbjxcL3Rib2R5PlxuPFwvdGFibGU+XG48XC9kaXY+XG48XC9kaXY+XG48b2wgc3RhcnQ9XCIyXCIgZGF0YS1zdGFydD1cIjEwODQ1XCIgZGF0YS1lbmQ9XCIxMDk1M1wiPlxuPGxpIGRhdGEtc3RhcnQ9XCIxMDg0NVwiIGRhdGEtZW5kPVwiMTA5NTNcIj5cbjxwIGRhdGEtc3RhcnQ9XCIxMDg0OFwiIGRhdGEtZW5kPVwiMTA5NTNcIj5TcGVjaWFsIGRyaWxsIHNpemVzIChpZiB0b2xlcmFuY2UgJmx0OyAzIG1pbCwgdXNlIHNwZWNpYWwgZHJpbGxzIG9yIDI1IFx1MDBiNW0gaW5jcmVtZW50LCB1c2UgbmVhcmVzdCBkcmlsbCBydWxlKTxcL3A+XG48XC9saT5cbjxcL29sPiIsImRpc3BsYXlfY29uZGl0aW9uX2xpc3QiOlt7ImRpc3BsYXlfY29uZGl0aW9uX2xvZ2luX3N0YXR1cyI6InN1YnNjcmliZXIiLCJfaWQiOiJhNGZkODYwIn1dfSwiZWxlbWVudHMiOltdLCJ3aWRnZXRUeXBlIjoidGV4dC1lZGl0b3IifQ==\\\"]\\t\\t<div class=\\\"elementor-element elementor-element-f7e142f elementor-widget elementor-widget-code-highlight\\\" data-id=\\\"f7e142f\\\" data-element_type=\\\"widget\\\" data-e-type=\\\"widget\\\" data-widget_type=\\\"code-highlight.default\\\">\\n\\t\\t\\t\\t<div class=\\\"elementor-widget-container\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"prismjs-default copy-to-clipboard \\\">\\n\\t\\t\\t<pre data-line=\\\"\\\" class=\\\"highlight-height language-aspnet line-numbers\\\">\\n\\t\\t\\t\\t<code readonly=\\\"true\\\" class=\\\"language-aspnet\\\">\\n\\t\\t\\t\\t\\t<xmp>List<double> ContainDrillToolList = new List<double>();\\r\\nContainDrillToolList.AddRange(new double[] { 610, 635, 711, 838, 914, 1016, 1320, 3120 });<\\\/xmp>\\n\\t\\t\\t\\t<\\\/code>\\n\\t\\t\\t<\\\/pre>\\n\\t\\t<\\\/div>\\n\\t\\t\\t\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6ImVjNTQyNGIiLCJlbFR5cGUiOiJ3aWRnZXQiLCJzZXR0aW5ncyI6eyJlZGl0b3IiOiI8cD4zLiBEcmlsbCBDb21wZW5zYXRpb24gQ29kZTxcL3A+IiwiZGlzcGxheV9jb25kaXRpb25fbGlzdCI6W3siZGlzcGxheV9jb25kaXRpb25fbG9naW5fc3RhdHVzIjoic3Vic2NyaWJlciIsIl9pZCI6IjE3YzczOTMifV19LCJlbGVtZW50cyI6W10sIndpZGdldFR5cGUiOiJ0ZXh0LWVkaXRvciJ9\\\"]\\t\\t<div class=\\\"elementor-element elementor-element-3dfeb51 elementor-widget elementor-widget-code-highlight\\\" data-id=\\\"3dfeb51\\\" data-element_type=\\\"widget\\\" data-e-type=\\\"widget\\\" data-widget_type=\\\"code-highlight.default\\\">\\n\\t\\t\\t\\t<div class=\\\"elementor-widget-container\\\">\\n\\t\\t\\t\\t\\t\\t\\t<div class=\\\"prismjs-default copy-to-clipboard \\\">\\n\\t\\t\\t<pre data-line=\\\"\\\" class=\\\"highlight-height language-csharp line-numbers\\\">\\n\\t\\t\\t\\t<code readonly=\\\"true\\\" class=\\\"language-csharp\\\">\\n\\t\\t\\t\\t\\t<xmp>\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Calculate the drill bit diameter based on drill compensation parameters\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\n\\\/\\\/\\\/<param name=\\\"ToolInfo\\\">Drill tool basic information<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"UpParam\\\">Drill compensation parameters<\\\/param>\\r\\n\\\/\\\/\\\/<param name=\\\"ContainDrillToolList\\\">Special drill bit diameter list<\\\/param>\\r\\n\\\/\\\/\\\/<returns>Return 1 if calculation is successful<\\\/returns>\\r\\npublic static int getDrillUpSize(Mod_tool ToolInfo, gToolUpParam UpParam, List<double> ContainDrillToolList)\\r\\n{\\r\\n    if (ContainDrillToolList == null) ContainDrillToolList = new List<double>();\\r\\n    gToolUpParamHole UpParamHole = new G_Helper.gToolUpParamHole();\\r\\n    switch (ToolInfo.type)\\r\\n    {\\r\\n        case \\\"via\\\":\\r\\n            UpParamHole = UpParam.Via;\\r\\n            break;\\r\\n        case \\\"plate\\\":\\r\\n            UpParamHole = UpParam.Pth;\\r\\n            break;\\r\\n        case \\\"nplate\\\":\\r\\n            UpParamHole = UpParam.Npth;\\r\\n            break;\\r\\n    }\\r\\n    ToolInfo.max_tol = Math.Round(UpParamHole.Max_Tol, 0);\\r\\n    ToolInfo.min_tol = Math.Round(UpParamHole.Min_Tol, 0);\\r\\n    if (ToolInfo.finish_size < 50)\\r\\n    {\\r\\n        ToolInfo.finish_size = ToolInfo.drill_size;\\r\\n    }\\r\\n    double DrillSlotLevel = (ToolInfo.shape == \\\"slot\\\") ? UpParam.SlotLevel : UpParam.DrillLevel;  \\\/\\\/Drill step interval: Round holes have two levels (25\\\/50\\u03bcm), slot holes have one level (50\\u03bcm)\\r\\n    double UpLevel;\\r\\n    if (UpParam.DrillLevel > 49) \\\/\\\/When the step interval is 50\\u03bcm, do not use special drill bits\\r\\n    {\\r\\n        ContainDrillToolList = new List<double>();\\r\\n        UpLevel = UpParamHole.UpLevel;\\r\\n    }\\r\\n    else\\r\\n    {\\r\\n        UpLevel = UpParam.DrillLevel * 0.5;   \\\/\\\/Select drill bit by half of the step interval\\r\\n    }\\r\\n\\r\\n    double Drillfinish_size = ToolInfo.finish_size + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n    int DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal) \\\/ DrillSlotLevel)); \\\/\\\/Drill step count\\r\\n    double DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step\\r\\n    double DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal) % DrillSlotLevel;\\\/\\\/Remainder of drill size after step division\\r\\n    double DrillsizeLevel = (DrillsizeFloat > UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n\\r\\n    \\\/\\\/Check if special drill bits are included\\r\\n    int ContainDrillIndex = ContainDrillToolList.FindIndex(tt => (int)(Math.Floor(tt \\\/ DrillSlotLevel)) == DrillLevelCount);\\r\\n    if (ContainDrillIndex > -1)\\r\\n    {\\r\\n        double ContainDrillFloat = ContainDrillToolList[ContainDrillIndex] % DrillSlotLevel;\\\/\\\/Remainder of special drill bit size after step division\\r\\n        if (DrillsizeFloat > UpLevel) \\\/\\\/ e.g. 38 > 20\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - DrillSlotLevel);   \\\/\\\/e.g. 40-50\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 40-38\\r\\n            DrillsizeLevel = (diff1 < diff2) ? DrillSlotLevel : ContainDrillFloat;\\r\\n        }\\r\\n        else \\\/\\\/if (ContainDrillFloat < UpLevel)\\r\\n        {\\r\\n            double diff1 = Math.Abs(DrillsizeFloat - 0);  \\\/\\\/e.g. 12-0\\r\\n            double diff2 = Math.Abs(DrillsizeFloat - ContainDrillFloat);  \\\/\\\/e.g. 12-16\\r\\n            DrillsizeLevel = (diff1 < diff2) ? 0 : ContainDrillFloat;\\r\\n        }\\r\\n    }\\r\\n    ToolInfo.drill_size = DrillsizeInt + DrillsizeLevel;\\r\\n\\r\\n    double DiffDrillSizeUp = ToolInfo.drill_size - ToolInfo.finish_size;\\r\\n    if (ToolInfo.shape == \\\"slot\\\") \\\/\\\/ Slot length compensation\\r\\n    {\\r\\n        if (UpParam.isSlotUpLevel) \\\/\\\/Whether to round the slot length to step interval\\r\\n        {\\r\\n            Drillfinish_size = ToolInfo.slot_len + (ToolInfo.max_tol - ToolInfo.min_tol) * 0.5;  \\\/\\\/Average the upper and lower tolerance\\r\\n            DrillLevelCount = (int)(Math.Floor((Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) \\\/ DrillSlotLevel)); \\\/\\\/ Drill step count\\r\\n            DrillsizeInt = DrillLevelCount * DrillSlotLevel; \\\/\\\/Round down to the nearest drill step (50\\u03bcm)\\r\\n            DrillsizeFloat = (Drillfinish_size + UpParamHole.UpVal + UpParam.SlotLengthUp) % DrillSlotLevel;\\\/\\\/Remainder of slot length after step division\\r\\n            DrillsizeLevel = (DrillsizeFloat > UpParamHole.UpLevel) ? DrillSlotLevel : 0;\\\/\\\/Determine whether to round up the remainder\\r\\n            ToolInfo.slot_len = DrillsizeInt + DrillsizeLevel;\\r\\n        }\\r\\n        else\\r\\n        {\\r\\n            DrillsizeInt = Math.Floor((ToolInfo.slot_len + DiffDrillSizeUp) \\\/ 10) * 10; \\\/\\\/ Round down to the nearest 10\\u03bcm\\r\\n            ToolInfo.slot_len = DrillsizeInt;\\r\\n        }\\r\\n        ToolInfo.drill_size += UpParam.SlotEndNumber;  \\\/\\\/ Add suffix number for slot drill bit segmentation\\r\\n    }\\r\\n    ToolInfo.bit = Math.Round((ToolInfo.drill_size * 0.001), 3).ToString();\\r\\n    return 1;\\r\\n}\\r\\n\\r\\npublic class gToolUpParam\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for VIA holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Via { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for PTH (Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Pth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation parameters for NPTH (Non-Plated Through Hole) (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public gToolUpParamHole Npth { get; set; } = new gToolUpParamHole();\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for round drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double DrillLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval for slot drill holes (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLevel { get; set; } = 50;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Suffix number for slot drill bit segmentation\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public int SlotEndNumber { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Additional compensation value for slot length (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double SlotLengthUp { get; set; } = 0;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Whether to round the slot length to step interval\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public bool isSlotUpLevel { get; set; } = false;\\r\\n}\\r\\n\\r\\npublic class gToolUpParamHole\\r\\n{\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Compensation value (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpVal { get; set; } = 100;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Step interval threshold for rounding up (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double UpLevel { get; set; } = 25;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Max_Tol { get; set; } = 76;\\r\\n    \\\/\\\/\\\/ <summary>\\r\\n    \\\/\\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    \\\/\\\/\\\/ <\\\/summary>\\r\\n    public double Min_Tol { get; set; } = 76;\\r\\n}\\r\\n\\r\\n\\\/\\\/\\\/<summary>\\r\\n\\\/\\\/\\\/ Mod_tool: Drill tool attribute model\\r\\n\\\/\\\/\\\/<\\\/summary>\\r\\npublic class Mod_tool\\r\\n{\\r\\n    public int num { get; set; }\\r\\n    public string type { get; set; } \\\/\\\/ Hole type: via\\\/plate(nplate)\\r\\n    public string shape { get; set; } \\\/\\\/ Hole shape: round\\\/slot\\r\\n    public double finish_size { get; set; } \\\/\\\/ Finished hole size (in \\u03bcm)\\r\\n    public double drill_size { get; set; } \\\/\\\/ Drill bit size (in \\u03bcm)\\r\\n    public double max_tol { get; set; } \\\/\\\/ Upper tolerance (in \\u03bcm)\\r\\n    public double min_tol { get; set; } \\\/\\\/ Lower tolerance (in \\u03bcm)\\r\\n    public double slot_len { get; set; } \\\/\\\/ Slot length (in \\u03bcm)\\r\\n    public string bit { get; set; } \\\/\\\/ Drill bit size (in mm, formatted string)\\r\\n}<\\\/xmp>\\n\\t\\t\\t\\t<\\\/code>\\n\\t\\t\\t<\\\/pre>\\n\\t\\t<\\\/div>\\n\\t\\t\\t\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t[elementor-element k=\\\"0e46bd9387093ca73b9000e38f18cce4\\\" data=\\\"eyJpZCI6IjU3OGViMjYiLCJlbFR5cGUiOiJ3aWRnZXQiLCJzZXR0aW5ncyI6eyJlZGl0b3IiOiI8aDIgZGF0YS1zdGFydD1cIjEwOTYwXCIgZGF0YS1lbmQ9XCIxMTAxN1wiPjYuIFdoeSBkb2VzIGJvYXJkIHRoaWNrbmVzcyBhZmZlY3QgZHJpbGwgY29tcGVuc2F0aW9uPzxcL2gyPlxuPHAgZGF0YS1zdGFydD1cIjExMDE5XCIgZGF0YS1lbmQ9XCIxMTQ2NFwiPkkgZGlkIG5vdCB1bmRlcnN0YW5kIHRoaXMgYXQgZmlyc3QgZWl0aGVyLiBUaGUgbWFpbiByZWFzb24gaXMgdGhlIGhpZ2ggPHN0cm9uZyBkYXRhLXN0YXJ0PVwiMTEwOTBcIiBkYXRhLWVuZD1cIjExMTIxXCI+dGhpY2tuZXNzLXRvLWRpYW1ldGVyIHJhdGlvPFwvc3Ryb25nPiAoYm9hcmQgdGhpY2tuZXNzIGRpdmlkZWQgYnkgaG9sZSBkaWFtZXRlcikuIEEgaGlnaCByYXRpbyBtYWtlcyB0aGUgY29wcGVyIGF0IHRoZSBob2xlIGNlbnRlciB0aGlubmVyIGFuZCB0aGUgY29wcGVyIGF0IHRoZSBob2xlIGVkZ2UgdGhpY2tlci4gVG8gY29tcHV0ZSB0aGUgdGhpY2tuZXNzLXRvLWRpYW1ldGVyIHJhdGlvIHlvdSBuZWVkIHRoZSBib2FyZCB0aGlja25lc3MgdmFsdWUuIFNvIGJvYXJkIHRoaWNrbmVzcyBlbnRlcnMgdGhlIGRyaWxsIGNvbXBlbnNhdGlvbiBydWxlcy4gRm9yIGhpZ2ggdGhpY2tuZXNzLXRvLWRpYW1ldGVyIGhvbGVzLCB0aGUgY29tcGVuc2F0aW9uIGlzIGxhcmdlci48XC9wPiIsImRpc3BsYXlfY29uZGl0aW9uX2xpc3QiOlt7ImRpc3BsYXlfY29uZGl0aW9uX2xvZ2luX3N0YXR1cyI6InN1YnNjcmliZXIiLCJfaWQiOiI3MTVjNjlhIn1dfSwiZWxlbWVudHMiOltdLCJ3aWRnZXRUeXBlIjoidGV4dC1lZGl0b3IifQ==\\\"]\\t\\t\\t<\\\/div>\\n\\t\\t\\t\\t<\\\/div>\\n\\t\\t\",\"scripts\":[],\"styles\":[]}}"]},"uagb_featured_image_src":{"full":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"thumbnail":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-150x150.webp",150,150,true],"medium":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-300x200.webp",300,200,true],"medium_large":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-768x512.webp",768,512,true],"large":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"1536x1536":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"2048x2048":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed.webp",800,533,false],"trp-custom-language-flag":["https:\/\/flj-pcb.com\/wp-content\/uploads\/2025\/12\/About-PCB-Drill-Compensation_compressed-18x12.webp",18,12,true]},"uagb_author_info":{"display_name":"Philifast","author_link":"https:\/\/flj-pcb.com\/es\/author\/2475017442jygmail-com\/"},"uagb_comment_info":1,"uagb_excerpt":"There are no great individuals, only great teams. With the team working together, the first-stage PCB CAM automation project for [&hellip;]","_links":{"self":[{"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/posts\/4575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/comments?post=4575"}],"version-history":[{"count":5,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/posts\/4575\/revisions"}],"predecessor-version":[{"id":4582,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/posts\/4575\/revisions\/4582"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/media\/4584"}],"wp:attachment":[{"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/media?parent=4575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/categories?post=4575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/flj-pcb.com\/es\/wp-json\/wp\/v2\/tags?post=4575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}