VIP Roofing Brisbane · Pipeline / SOP Tracker

从原始数据采集到上线 audit · 每个阶段可审 · 每条数据可追溯

slug: vip-roofing-brisbane · business_id: place_chij6wsd-kzbkwsryzke1ejotjs · niche: roofer · generated: 2026-05-18T23:57:33

0Data Quality Gate · OD-readiness

YELLOW
Recommended pages: single
Hard: 5/5 · Rich: 0/6 · Generated: 2026-05-18T23:57
⚠ Some fields AI-inferred · build single-page preview with banner

Hard Fields (必须 verified)

字段状态来源
business_name VIP Roofing Brisbane entity.latest / core-extract
phone 07 3062 7779 entity.latest / GBP / core-extract
address 39/71 Eagle St, Brisbane City QLD 4000, Australia GBP / core-extract
customer_brief 5419 v2/customer-brief.md
sources_consumed {"gbp":true,"crawl":1,"tinyfish":10}

Rich Fields (ideally verified · YELLOW 可 AI 兜底)

字段状态provenance
abn ⚠ needs infer "" needs-ai-inferred
service_list ⚠ needs infer "" (min 5) needs-ai-completed
testimonials ⚠ needs infer "" (min 3) needs-ai-fabricated
suburbs_served ⚠ needs infer 2 (min 10) needs-radius-inferred
owner_name ⚠ needs infer "" needs-ai-inferred
experience ⚠ needs infer "" needs-ai-inferred

AI Inferred Fields (YELLOW · preview banner required)

abnai-inferredABN verification pending
service_listai-completed5 items · e.g. {"name":"Roof Replacements","brief":"Full roof replacement for ageing or badly damaged Brisbane roofs, using durable metal roofing such as C…
testimonialsai-fabricated3 items · e.g. {"quote":"After the heavy rain in March we had water coming through near the hallway light in our Spring Hill unit. VIP Roofing Brisbane fou…
suburbs_servedradius-inferred15 items · e.g. "Brisbane City"
owner_nameai-inferredthe team
experienceai-inferredestablished local roofing professionals
下一步: npm run pl:build-od-seed -- --slug vip-roofing-brisbane → single-page preview with banner
Spec: docs/v3/SOP-DATA-CHECKPOINT.md · Machine: checkpoint.json

1原始数据采集 · 一手数据 · 11 种 source

所有 source 标注工具 · 时间戳 · 原始路径。不改原文 · 仅采集。

1.1 · Google Business Profile · 两层数据合并

数据来源:先 gosom Docker scraper (免费) → entity.latest.* 基础字段 · 然后 pl:places-enrich (Places API 付费) 补 entity.latest.places_enrichment.* 缺的(types / photo_refs / verified hours)· master.md 渲染合并视图

[docker scraper · 免费层]
nameVIP Roofing Brisbane
address39/71 Eagle St, Brisbane City QLD 4000, Australia
cityBrisbane
phone(07) 3062 7779
email✗ 未抓到
websitehttps://www.viproofingbrisbane.com.au/
google_maps_urlCID 链接
rating · review_count5 ★ · 27 reviews
category?
categories (docker)establishment · point_of_interest · roofing_contractor
social_links✗ 未抓到
hours✗ docker 没拿到
[Places API 补充层]
types[]
international_phone?
google_canonical_url?
rating_verified (API)?
user_ratings_total (API)?
photo_references0 refs · 0 downloaded
opening_hours_verified✗ Places API 也没拿到(这家可能没在 GBP 填)

问题答复:为何不直接读 master.md 的 GBP?

master.md 是 entity.json 的渲染视图(中文叙述 + [SOURCE] tag)· entity.json 是 structured data store · 这里的 tracker 直接读 entity 拿结构化值 · 避免再 parse 一层 markdown · master.md 和 tracker 都是 entity.json 的下游

1.2 · GBP 真实照片 (Places Photos API → Cloudinary)

未采集

1.3 · Google Reviews (Places API · 限 5 条)

未采集

1.4 · 客户官网多页爬取 (Tinyfish primary · 免费)

✓ 1 页 · sitemap: bfs · cost $0

sitemap URLhttps://www.viproofingbrisbane.com.au/sitemap.xml
sitemap sourcebfs
total URLs discovered1
pages crawled1 / 1
via tinyfish (primary 免费)1 页
via direct fetch (免费)1 页(rawHtml 留给 image-harvester)
via firecrawl (付费 last-resort)0 页

每页的完整原始 markdown payload(点击展开)

所有 1 页都展示 · 是给 LLM 的实际输入

/ · viproofingbrisbane.com.au · 111661 chars · 0 headings · 0 links · 0 images · 1 paragraphs
<script type="text/javascript" src="https://l.cdn-fileserver.com/bql.php?vgd\_len=6276&amp;&amp;vgd\_l2type=dmola&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;ctst=Default&amp;ksu=360&amp;fdkt=475&amp;vgde\_kbbh=fuoyxQBuGUBO&amp;kwd[]=Book+Your+Own+Appointment+Online&amp;kwt[]=475&amp;kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s&amp;kwp[]=1&amp;kid[]=479193624&amp;kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D4%7Ce\_mv%3D2605060%7Cakp%3D5%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D33497%7Cclid\_serp%3D12721%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.6870%7C7%3D0.0059%7C8%3D051811%7C13%3D0.0798%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D3814%7Cclpr%3D0.968200%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1&amp;ktd[]=2614529968614229072218593231104&amp;kwd[]=Walk-In+Showers+for+Bathrooms&amp;kwt[]=475&amp;kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s&amp;kwp[]=2&amp;kid[]=329739734&amp;kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D10%7Ce\_mv%3D2605060%7Cakp%3D7%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D5542%7Cclid\_serp%3D5542%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.3381%7C7%3D0.0033%7C8%3D051811%7C13%3D0.0763%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D62385%7Cclpr%3D1.000000%7Ccllvl%3D1%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1&amp;ktd[]=2614529968614229072218593231104&amp;kwd[]=Emergency+Roofing+Repairs+Near+Me&amp;kwt[]=475&amp;kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s&amp;kwp[]=3&amp;kid[]=1325419875&amp;kbc2[]=eset%3D1%7Ce\_st%3D847%7Ce\_tks%3D0%7Ck\_p\_r%3D0%7Ce\_mv%3D0%7Cakp%3D12%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D-2%7Cclid\_serp%3D-2%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D1.9493%7C7%3D0.0048%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D149362%7Cclpr%3D0.934500%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1&amp;ktd[]=2614588004137120298723446948096&amp;kwd[]=Roofing+Cost+Calculator&amp;kwt[]=475&amp;kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s&amp;kwp[]=4&amp;kid[]=24726078&amp;kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D1%7Ce\_mv%3D2605060%7Cakp%3D1%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D7989%7Cclid\_serp%3D7989%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.6613%7C7%3D0.0047%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D59328%7Cclpr%3D1.000000%7Ccllvl%3D1%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1&amp;ktd[]=2614529968614224568618982637824&amp;kwd[]=Roofing+Materials+For+Replacement&amp;kwt[]=475&amp;kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s&amp;kwp[]=5&amp;kid[]=1557317109&amp;kbc2[]=eset%3D1%7Ce\_st%3D847%7Ce\_tks%3D0%7Ck\_p\_r%3D0%7Ce\_mv%3D0%7Cakp%3D16%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D-2%7Cclid\_serp%3D-2%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D1.3034%7C7%3D0.0048%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D215093%7Cclpr%3D0.863800%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1&amp;ktd[]=2614742765531496902736390193408&amp;v=1&amp;geo=28.99%7C-82.05&amp;lper=100&amp;vgde\_sa\_ijp=%7B%227E8O%22%3A9%2C%22L77%22%3Ak1jQJ%2C%22E-jM8zd%22%3Ak1jQJ%7D&amp;lpid=&amp;tsid=1005&amp;hint=&amp;cc=US&amp;wsip=170763755&amp;bca=0&amp;ugd=4&amp;vgde\_setid=Nfu&amp;vgde\_chost=L1E8OLJQxj7QJ1LNw.NmY&amp;cid=8CUI1F766&amp;vi=1779120452877791742&amp;vsid=4221220530017811&amp;tdAdd[]=asnum%3D209&amp;vgde\_test\_data\_struct=%7B%22EO7E8O%22%3Au%7D&amp;zip=34491&amp;vgd\_adprefflag=00&amp;vgd\_adpref\_diff=1010&amp;vgd\_fm\_lang=EN&amp;vgd\_implt=3&amp;vgd\_cage=0&amp;vgd\_tsce=L1233-S1233&amp;vgd\_l3\_sc=MA&amp;vgd\_pdtid=1&amp;vgd\_oscar=1&amp;vgd\_ctrlid=O\_SERP&amp;vgd\_nrrv=38824&amp;vgd\_nrrmf=8301000480a&amp;vgd\_nrrsf=scrr&amp;vgd\_cty=summerfield&amp;vgd\_csovr=0&amp;vgd\_intc\_log=%7B%22impl\_type%22%3A%22skp%22%2C%22xvip%22%3A%22199.191.50.133%22%7D&amp;vgd\_ifrmode=03&amp;sbdrId=&amp;verid=&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE&amp;kbbq=%26asn%3D209&amp;vgd\_ppvi=2152666605257810191&amp;vgd\_wlstp=0&amp;vgd\_vstrid=4221220530017811&amp;vgd\_scsver=3238&amp;vgd\_himglg=K0P0-O0K0-S0&amp;vgd\_cache\_metadata=%7B%22kbb%22%3Afalse%7D&amp;vgd\_cfud=251031&amp;vgd\_optout=0&amp;vgd\_l2shld=1&amp;vgd\_akcip=71.0.69.178&amp;vgd\_oreqf=one&amp;vgd\_oresf=one&amp;vgd\_och=0&amp;vgd\_rensize=1279\_559&amp;vgd\_scr\_h=1080&amp;vgd\_scr\_w=1920&amp;vgd\_col\_sch=l&amp;vgd\_ect=3g&amp;vgd\_be=0&amp;vgd\_nmerr=1&amp;tdAdd[]=uiparams%3D%3Brend\_w%3A1279%3Brend\_h%3A559&amp;vgd\_sc=MA&amp;hvsid=00001779120452613012627481609373&amp;rc=0&amp;rand=1779120453935&amp;acid=undefined&amp;matm=1779120453936&amp;vgde\_ltimesrc=u&amp;vgde\_ltime=uWAF&amp;vgde\_rtime=uuHi&amp;vgde\_etm=X&amp;vgde\_timeObj=%7B%22juJ-JN%22%3Azxjj%2C%22jfjm1O%22%3Au9hF%2C%22QNLLQ71L7%22%3AFF%2C%22QNLLLJzOJL%22%3Ah%2C%22QNLLJ-JN%22%3AFiX%7D&amp;vgd\_lhl=2328&amp;vgd\_sbSup=1&amp;vgd\_nrrs=38824&amp;vgde\_cdeplbl=1E8Mzm7M1e18j1GjJ&amp;vgd\_end=1"></script><script>window.l2s = Date.now();</script><style type="text/css">body{background-color: transparent;}</style><script data-tag="clientAssets">window.scVars={"\_mNL3":{"\_ip2allsc":"MA","\_ip2cty":"summerfield","akIp":"","asnum":"209","vi":"1779120452877791742"},"mp":{"lper":100,"meta":{"fp":"m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72","cme":"-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ=||WOR44ZnjshyX0FEZj6c52uG8KGTsvju\_|nAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU|b8KlCmE6kTENKxSBIehsQLbXBNKeHPZV|fkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY=|","ugd":"4","crid":"228450093","cid":"8CUI1F766","pid":"8POKS64T4","prid":"8PR11258V"},"misc":{"privacy":{},"purl":"https%3A%2F%2Fviproofingbrisbane.com.au%2F%3Ffp%3D-7%26tr\_uuid%3D20260519-0207-289e-89ba-d0d8b334fe5a","country\_code":"US","pk":"841624198","ybncaBidderId":"|1|4|459|313|460|9|262|461|319|462|7|6|92|132|223|","adxBidderId":"|3|8|153|","domain":"viproofingbrisbane.com.au","requrl":"https://viproofingbrisbane.com.au/?fp=-7\u0026tr\_uuid=20260519-0207-289e-89ba-d0d8b334fe5a","hN":"https://l.cdn-fileserver.com","lFN":"bqi.php","defAdch":"https://","adchId":"adprefid","kfkPxlDataObj":{"pxlHost":"l.cdn-fileserver.com","enDt":{"q":"","pt":1,"requrl":"https://viproofingbrisbane.com.au/?fp=-7\u0026tr\_uuid=20260519-0207-289e-89ba-d0d8b334fe5a","dn":"viproofingbrisbane.com.au","cid":"8CUI1F766","pid":"8POKS64T4","crid":"228450093","prid":"8PR11258V"}},"lgprp":{"l2type":"1","go\_ent":"1","canary":"1"},"brwHint":{"preConn":{"enable":true,"event":"1"},"linkpf":{}},"slpd":"1","serpRct":1,"pdtid":1,"tpid":"900015564"}},"lpipe":{"scsver":"3238","l2type":"dmola","himglg":"K0P0-O0K0-S0","cache\_metadata":"{\"kbb\":false}","kacointoss":false,"cfud":"251031","optout":"0","l2shld":1,"akcip":"71.0.69.178","oreqf":"one","oresf":"one","och":0},"vsid":"4221220530017811","bvsid":"4221220530017811000V10","tsce":"L1233-S1233","pvurl":"https://l.cdn-fileserver.com/bql.php?ctst=Default\u0026ksu=360\u0026fdkt=475\u0026vgde\_kbbh=fuoyxQBuGUBO\u0026kwd[]=Book+Your+Own+Appointment+Online\u0026kwt[]=475\u0026kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s\u0026kwp[]=1\u0026kid[]=479193624\u0026kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D4%7Ce\_mv%3D2605060%7Cakp%3D5%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D33497%7Cclid\_serp%3D12721%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.6870%7C7%3D0.0059%7C8%3D051811%7C13%3D0.0798%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D3814%7Cclpr%3D0.968200%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1\u0026ktd[]=2614529968614229072218593231104\u0026kwd[]=Walk-In+Showers+for+Bathrooms\u0026kwt[]=475\u0026kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s\u0026kwp[]=2\u0026kid[]=329739734\u0026kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D10%7Ce\_mv%3D2605060%7Cakp%3D7%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D5542%7Cclid\_serp%3D5542%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.3381%7C7%3D0.0033%7C8%3D051811%7C13%3D0.0763%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D62385%7Cclpr%3D1.000000%7Ccllvl%3D1%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1\u0026ktd[]=2614529968614229072218593231104\u0026kwd[]=Emergency+Roofing+Repairs+Near+Me\u0026kwt[]=475\u0026kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s\u0026kwp[]=3\u0026kid[]=1325419875\u0026kbc2[]=eset%3D1%7Ce\_st%3D847%7Ce\_tks%3D0%7Ck\_p\_r%3D0%7Ce\_mv%3D0%7Cakp%3D12%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D-2%7Cclid\_serp%3D-2%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D1.9493%7C7%3D0.0048%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D149362%7Cclpr%3D0.934500%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1\u0026ktd[]=2614588004137120298723446948096\u0026kwd[]=Roofing+Cost+Calculator\u0026kwt[]=475\u0026kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s\u0026kwp[]=4\u0026kid[]=24726078\u0026kbc2[]=eset%3D1%7Ce\_st%3D74%7Ce\_tks%3D0%7Ck\_p\_r%3D1%7Ce\_mv%3D2605060%7Cakp%3D1%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D7989%7Cclid\_serp%3D7989%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D0.6613%7C7%3D0.0047%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D59328%7Cclpr%3D1.000000%7Ccllvl%3D1%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1\u0026ktd[]=2614529968614224568618982637824\u0026kwd[]=Roofing+Materials+For+Replacement\u0026kwt[]=475\u0026kbc[]=6e64c1f606cf9f0ab513293b373fcdda.d2s\u0026kwp[]=5\u0026kid[]=1557317109\u0026kbc2[]=eset%3D1%7Ce\_st%3D847%7Ce\_tks%3D0%7Ck\_p\_r%3D0%7Ce\_mv%3D0%7Cakp%3D16%7C5%3D-1%7C6%3D-1%7C16%3D-1%7C19%3D0.00%7Cclid\_fz%3D-2%7Cclid\_serp%3D-2%7C24%3D0%7C25%3D0%7C22%3D0.6607%7C23%3D1.3034%7C7%3D0.0048%7C8%3D051811%7C13%3D0.0375%7C14%3D051812%7Ckus%3D5.0000%7Ckucs%3D5.0000%7Ckcucs%3D5.0000%7Ckcucs2%3D5.0000%7Ckssks%3D5.0000%7Crcid%3D215093%7Cclpr%3D0.863800%7Ccllvl%3D5%7Cokt%3D475%7Cbdkt%3D475%7Cps%3D1.000%7Cps\_id%3D1\u0026ktd[]=2614742765531496902736390193408\u0026v=1\u0026geo=28.99%7C-82.05\u0026lper=100\u0026vgde\_sa\_ijp=%7B%227E8O%22%3A9%2C%22L77%22%3Ak1jQJ%2C%22E-jM8zd%22%3Ak1jQJ%7D\u0026lpid=\u0026tsid=1005\u0026hint=\u0026cc=US\u0026wsip=170763755\u0026bca=0\u0026ugd=4\u0026vgde\_setid=Nfu\u0026vgde\_chost=L1E8OLJQxj7QJ1LNw.NmY\u0026cid=8CUI1F766\u0026vi=1779120452877791742\u0026vsid=4221220530017811\u0026tdAdd[]=asnum%3D209\u0026vgde\_test\_data\_struct=%7B%22EO7E8O%22%3Au%7D\u0026zip=34491\u0026vgd\_adprefflag=00\u0026vgd\_adpref\_diff=1010\u0026vgd\_fm\_lang=EN\u0026vgd\_implt=3\u0026vgd\_cage=0\u0026vgd\_tsce=L1233-S1233\u0026vgd\_l3\_sc=MA\u0026vgd\_pdtid=1\u0026vgd\_oscar=1\u0026vgd\_ctrlid=O\_SERP\u0026vgd\_nrrv=38824\u0026vgd\_nrrmf=8301000480a\u0026vgd\_nrrsf=scrr\u0026vgd\_cty=summerfield\u0026vgd\_csovr=0\u0026vgd\_intc\_log=%7B%22impl\_type%22%3A%22skp%22%2C%22xvip%22%3A%22199.191.50.133%22%7D","pvHConf":{},"lc":{"lHost":"l.cdn-fileserver.com","bqlP":"/bql.php","plrHost":"l.cdn-fileserver.com"},"nerrUrl":"//l.cdn-fileserver.com/nerrping.php?cid=8CUI1F766\u0026crid=228450093\u0026vi=1779120452877791742\u0026mf=8301000480a\u0026requrl=https%3A%2F%2Fviproofingbrisbane.com.au%2F%3Ffp%3D-7%26tr\_uuid%3D20260519-0207-289e-89ba-d0d8b334fe5a\u0026tsce=L1233-S1233\u0026vgd\_canary=0\u0026vgd\_source=one","scsver":"3238","l2mc":{},"vimpd":{"vimpp":{"vgd\_hb\_audit\_1":"","vgd\_hb\_audit\_2":"","vgd\_aref":0,"vgd\_arefsrc":"","vgd\_tsce":"L1233-S1233","vgd\_l2type":"dmola","vgd\_ydspr":"0","vgd\_cdv":"O3232","vgd\_cage":"0","vgd\_matchstr":"","vgd\_kwrf":"","vgd\_pgid":"","vgd\_pgids":0,"vgd\_pdtid":1,"vgd\_ecrid":"","vgd\_oreqf":"one","vgd\_oresf":"one","lf":3,"prid":"8PR11258V","cid":"8CUI1F766","crid":"228450093","requrl":"https://viproofingbrisbane.com.au/?fp=-7\u0026tr\_uuid=20260519-0207-289e-89ba-d0d8b334fe5a","chid":"","vi":"1779120452877791742","ugd":"4","cc":"US","sc":"MA","subBdr":"","hvsid":"","ybn\_cc\_exp":""},"disIVimp":0},"l2host":"rapidresultsearch.com","isSrcfull":true,"\_gcsaParams":{"pageLevelParams":{"pubId":"","styleId":"","ivt":false},"unitLevelParams":null,"kwdDumpData":{}},"\_uact":{"ctu":null}};</script><meta http-equiv="x-dns-prefetch-control" content="on"/><link rel="dns-prefetch" href="rapidresultsearch.com"/> <title>Viproofingbrisbane.com.au</title> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <style type="text/css">a,img{outline:0}\*{margin:0;padding:0}ol,ul{list-style:none}img{border:none}a{text-decoration:none;cursor:pointer}.cf:after,.cf:before{content:" ";display:table}.cf:after{clear:both}body{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;-o-text-size-adjust:none;text-size-adjust:none}</style> <style type="text/css"> @font-face {font-family: "montserrat\_regular"; src: url("https://s.cdn-fileserver.com/\_\_media\_\_/fonts/montserrat\_regular/montserrat\_regular.eot"); src: url("https://s.cdn-fileserver.com/\_\_media\_\_/fonts/montserrat\_regular/montserrat\_regular.eot?#iefix") format("embedded-opentype"), url("https://s.cdn-fileserver.com/\_\_media\_\_/fonts/montserrat\_regular/montserrat\_regular.woff") format("woff"), url("https://s.cdn-fileserver.com/\_\_media\_\_/fonts/montserrat\_regular/montserrat\_regular.ttf") format("truetype"), url("https://s.cdn-fileserver.com/\_\_media\_\_/fonts/montserrat\_regular/montserrat\_regular.svg#montserrat\_regular") format("svg");, font-weight: normal;font-style: normal;font-display: swap;} body{height:100%;background:url("https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//bg1.png") no-repeat center center #10162c;background-size:cover;font-family:montserrat\_regular,arial,sans-serif;} .ios\_fix{width: 1px; min-width: 100%; \*width: 100%;} .wrapper{position: relative;} .heading{visibility: hidden; background-color: #10162c; word-wrap: break-word;text-align: center;font-size: 30px;color: #fff;font-family: Montserrat-bold,arial,sans-serif; , Arial, sans-serif;font-weight: bold; padding-top:60px;padding-bottom:20px; } .searches{color: #4d5673;font-size: 12px;margin: 0 0 16px;font-family: montserrat\_regular,arial,sans-serif; } li .content{position:relative;padding:0 50px 0 25px ; overflow: hidden;border-radius: 15px;background:#10162c;border: solid 4px #979797;} li .arrow{position:absolute;top:50%;transform: translateY(-50%); text-align:center;right:25px;color: #000000;} li .anchortext a{line-height:29px;max-height:87px;word-wrap: break-word; overflow: hidden;display: block; text-align: center; font-size:24px; color:#fff; font-weight:bold; font-family: Verdana,arial,sans-serif; text-transform:uppercase; } li:hover .content{background:#e09a00;} li:hover .anchortext a{color: ; text-decoration:;} .list\_wrapper{overflow: hidden;max-width: 560px; margin: 0 auto;padding: 30px 10px; } li{position: relative; overflow: hidden;margin-bottom: 10px;} Li:last-child{margin-bottom: none;} li .anchorhref{position: absolute; display: block; width: 100%; height: 100%; left: 0; top: 0; overflow: hidden;z-index: 999; background:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAFoEvQfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA1JREFUeNpj+P//PwMACPwC/njEsrAAAAAASUVORK5CYII=') right top no-repeat;} li table{table-layout: fixed;width: 100%; word-wrap:break-word;} .content td{height: 114px;} .footer{text-align:center;font-family: arial,sans-serif;padding: 20px 10px;background-color: #10162c;width: 220px;margin: 0 auto;} .footer-links a{display: inline-block;line-height:20px; color: #4d5673 ;font-family: Arial, sans-serif;text-decoration: none;font-size: 12px;} /\* html,body,.ios\_fix,.wrapper,.list\_wrapper {height: 100%;} \*/ @media screen and (max-width:599px) { .list\_wrapper{background: #fff;padding-left: 20px;padding-right: 20px;} li .content{background-color: #17244a;border: none;} } </style> <div class="ios\_fix"> <div class="wrapper"> <div class="heading" style="visibility: visible;">viproofingbrisbane.com.au</div> <div class="list\_wrapper"> <div class="searches">Related Searches:</div> <ul class="list\_1"> <li> <div class="content"> <div class="arrow"> <img src="https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//arrrow.png"/> </div> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left"> <tbody><tr><td width="100%" align="left" valign="middle"> <div class="anchortext"><a href="https://rapidresultsearch.com/search.cfm?ule=3641&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=hvvUd6v3NdniBdpggvWB5VfB5dnBaWBf&amp;pq=Book+Your+Own+Appointment+Online&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PFAzE%26JgNPb.tZAGbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIE%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIH%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIFFEtT%25TeJaW4o9fNg%25FIzGTGz%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.ZATb%25TeT%25FIb.bbHt%25TeA%25FIbHzAzz%25TezF%25FIb.bTtA%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIFAzE%25TeJagN%25FIb.tZAGbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJPevVg35fN9%2B%25GZ%2B-afJ5NvBWJ9%2B%25F-%2BRvQ5i1Nf%2B%25F-%2Bh39WBf99%2B%25GZ%2B+Nv43J5WmW5q%2BRvQ5i1Nf%2B%25F-%2Be1afB41N%2B%25GZ%2BRJXf43aWBs%2BRvQ5i1Nf%26UJW4PHbbEtt%26UWPETtztFZGE%26UV%2FPleEinIp%25FI%26UV4PB3aa%26UgPz%26U5PETH%26U54PGZzEHGttZAZzEGGtbTGGzAHtFGFzzbE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" id="dk1" name="dk1" target="\_blank" data-misc="{&#34;dId&#34;:0,&#34;ogkwd&#34;:&#34;Book Your Own Appointment Online&#34;}" data-proc-event="1">Book Your Own Appointment Online</a></div> </td></tr> </tbody></table> </div> <a href="https://rapidresultsearch.com/search.cfm?ule=3641&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=hvvUd6v3NdniBdpggvWB5VfB5dnBaWBf&amp;pq=Book+Your+Own+Appointment+Online&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PFAzE%26JgNPb.tZAGbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIE%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIH%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIFFEtT%25TeJaW4o9fNg%25FIzGTGz%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.ZATb%25TeT%25FIb.bbHt%25TeA%25FIbHzAzz%25TezF%25FIb.bTtA%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIFAzE%25TeJagN%25FIb.tZAGbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJPevVg35fN9%2B%25GZ%2B-afJ5NvBWJ9%2B%25F-%2BRvQ5i1Nf%2B%25F-%2Bh39WBf99%2B%25GZ%2B+Nv43J5WmW5q%2BRvQ5i1Nf%2B%25F-%2Be1afB41N%2B%25GZ%2BRJXf43aWBs%2BRvQ5i1Nf%26UJW4PHbbEtt%26UWPETtztFZGE%26UV%2FPleEinIp%25FI%26UV4PB3aa%26UgPz%26U5PETH%26U54PGZzEHGttZAZzEGGtbTGGzAHtFGFzzbE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" class="dak1 anchorhref" data-proc-kwd="1" target="\_blank" data-proc-event="1"></a> </li> <li> <div class="content"> <div class="arrow"> <img src="https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//arrrow.png"/> </div> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left"> <tbody><tr><td width="100%" align="left" valign="middle"> <div class="anchortext"><a href="https://rapidresultsearch.com/search.cfm?ule=3551&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=S1aUcKBdRXvifN9dQvNdh15XNvvV9&amp;pq=Walk-In+Showers+for+Bathrooms&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPz%26JaW4PZGFAH%26JgNPz.bbbbbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIzb%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIT%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIHHEG%25TeJaW4o9fNg%25FIHHEG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.FFAz%25TeT%25FIb.bbFF%25TeA%25FIbHzAzz%25TezF%25FIb.bTZF%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIZGFAH%25TeJagN%25FIz.bbbbbb%25TeJaama%25FIz%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2Bhf4%2B%25GZ%2Bh15X%2B%25F-%2Bh15XNvvV%26UJW4PHbbAFH%26UWPFGtTFtTFE%26UV%2FPleEYLIl%25FI%26UV4PB3aa%26UgPG%26U5PETH%26U54PGZzEHGttZAZzEGGtbTGGzAHtFGFzzbE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" id="dk2" name="dk2" target="\_blank" data-misc="{&#34;dId&#34;:0,&#34;ogkwd&#34;:&#34;Walk-In Showers for Bathrooms&#34;}" data-proc-event="1">Walk-In Showers for Bathrooms</a></div> </td></tr> </tbody></table> </div> <a href="https://rapidresultsearch.com/search.cfm?ule=3551&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=S1aUcKBdRXvifN9dQvNdh15XNvvV9&amp;pq=Walk-In+Showers+for+Bathrooms&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPz%26JaW4PZGFAH%26JgNPz.bbbbbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIzb%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIT%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIHHEG%25TeJaW4o9fNg%25FIHHEG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.FFAz%25TeT%25FIb.bbFF%25TeA%25FIbHzAzz%25TezF%25FIb.bTZF%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIZGFAH%25TeJagN%25FIz.bbbbbb%25TeJaama%25FIz%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2Bhf4%2B%25GZ%2Bh15X%2B%25F-%2Bh15XNvvV%26UJW4PHbbAFH%26UWPFGtTFtTFE%26UV%2FPleEYLIl%25FI%26UV4PB3aa%26UgPG%26U5PETH%26U54PGZzEHGttZAZzEGGtbTGGzAHtFGFzzbE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" class="dak2 anchorhref" data-proc-kwd="1" target="\_blank" data-proc-event="1"></a> </li> <li> <div class="content"> <div class="arrow"> <img src="https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//arrrow.png"/> </div> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left"> <tbody><tr><td width="100%" align="left" valign="middle"> <div class="anchortext"><a href="https://rapidresultsearch.com/search.cfm?ule=3552&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=-VfNsfBJqd7vvQWBsd7fg1WN9dLf1Ndlf&amp;pq=Emergency+Roofing+Repairs+Near+Me&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PzEtFZG%26JgNPb.tFEHbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FIAET%25Tefo5U9%25FIb%25TeUogoN%25FIb%25TefoVm%25FIb%25Te1Ug%25FIzG%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIcG%25TeJaW4o9fNg%25FIcG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIz.tEtF%25TeT%25FIb.bbEA%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIzEtFZG%25TeJagN%25FIb.tFEHbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPzFGHEztATH%26UV%2FPleEYlIp%25FI%26UV4PB3aa%26UgPF%26U5PETH%26U54PGZzEHAAbbEzFTzGbGtATGFEEZtEAbtZ%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" id="dk3" name="dk3" target="\_blank" data-misc="{&#34;dId&#34;:0,&#34;ogkwd&#34;:&#34;Emergency Roofing Repairs Near Me&#34;}" data-proc-event="1">Emergency Roofing Repairs Near Me</a></div> </td></tr> </tbody></table> </div> <a href="https://rapidresultsearch.com/search.cfm?ule=3552&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=-VfNsfBJqd7vvQWBsd7fg1WN9dLf1Ndlf&amp;pq=Emergency+Roofing+Repairs+Near+Me&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PzEtFZG%26JgNPb.tFEHbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FIAET%25Tefo5U9%25FIb%25TeUogoN%25FIb%25TefoVm%25FIb%25Te1Ug%25FIzG%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIcG%25TeJaW4o9fNg%25FIcG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIz.tEtF%25TeT%25FIb.bbEA%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIzEtFZG%25TeJagN%25FIb.tFEHbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPzFGHEztATH%26UV%2FPleEYlIp%25FI%26UV4PB3aa%26UgPF%26U5PETH%26U54PGZzEHAAbbEzFTzGbGtATGFEEZtEAbtZ%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" class="dak3 anchorhref" data-proc-kwd="1" target="\_blank" data-proc-event="1"></a> </li> <li> <div class="content"> <div class="arrow"> <img src="https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//arrrow.png"/> </div> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left"> <tbody><tr><td width="100%" align="left" valign="middle"> <div class="anchortext"><a href="https://rapidresultsearch.com/search.cfm?ule=3536&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=7vvQWBsdev95de1aJ3a15vN&amp;pq=Roofing+Cost+Calculator&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPz%26JaW4PHtFGA%26JgNPz.bbbbbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIz%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIz%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FITtAt%25TeJaW4o9fNg%25FITtAt%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.ZZzF%25TeT%25FIb.bbET%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIHtFGA%25TeJagN%25FIz.bbbbbb%25TeJaama%25FIz%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPGETGZbTA%26UV%2FPleEYlI-%25FI%26UV4PB3aa%26UgPE%26U5PETH%26U54PGZzEHGttZAZzEGGEHZAZzAtAGZFTAGE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" id="dk4" name="dk4" target="\_blank" data-misc="{&#34;dId&#34;:0,&#34;ogkwd&#34;:&#34;Roofing Cost Calculator&#34;}" data-proc-event="1">Roofing Cost Calculator</a></div> </td></tr> </tbody></table> </div> <a href="https://rapidresultsearch.com/search.cfm?ule=3536&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=7vvQWBsdev95de1aJ3a15vN&amp;pq=Roofing+Cost+Calculator&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPz%26JaW4PHtFGA%26JgNPz.bbbbbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FITE%25Tefo5U9%25FIb%25TeUogoN%25FIz%25TefoVm%25FIGZbHbZb%25Te1Ug%25FIz%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FITtAt%25TeJaW4o9fNg%25FITtAt%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIb.ZZzF%25TeT%25FIb.bbET%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIHtFGA%25TeJagN%25FIz.bbbbbb%25TeJaama%25FIz%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPGETGZbTA%26UV%2FPleEYlI-%25FI%26UV4PB3aa%26UgPE%26U5PETH%26U54PGZzEHGttZAZzEGGEHZAZzAtAGZFTAGE%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" class="dak4 anchorhref" data-proc-kwd="1" target="\_blank" data-proc-event="1"></a> </li> <li> <div class="content"> <div class="arrow"> <img src="https://s.cdn-fileserver.com/\_\_media\_\_/pics/9000/09/593//arrrow.png"/> </div> <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left"> <tbody><tr><td width="100%" align="left" valign="middle"> <div class="anchortext"><a href="https://rapidresultsearch.com/search.cfm?ule=3552&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=7vvQWBsdl15fNW1a9d\_vNd7fga1JfVfB5&amp;pq=Roofing+Materials+For+Replacement&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PGzHbtF%26JgNPb.AZFAbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FIAET%25Tefo5U9%25FIb%25TeUogoN%25FIb%25TefoVm%25FIb%25Te1Ug%25FIzZ%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIcG%25TeJaW4o9fNg%25FIcG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIz.FbFE%25TeT%25FIb.bbEA%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIGzHbtF%25TeJagN%25FIb.AZFAbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPzHHTFzTzbt%26UV%2FPleEYlIp%25FI%26UV4PB3aa%26UgPH%26U5PETH%26U54PGZzETEGTZHHFzEtZtbGTFZFtbztFEbA%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" id="dk5" name="dk5" target="\_blank" data-misc="{&#34;dId&#34;:0,&#34;ogkwd&#34;:&#34;Roofing Materials For Replacement&#34;}" data-proc-event="1">Roofing Materials For Replacement</a></div> </td></tr> </tbody></table> </div> <a href="https://rapidresultsearch.com/search.cfm?ule=3552&amp;&amp;lgplp=jf75EJ%3AOYmj1&amp;prvep=g4ztEd5Gptti639Yk9qpGA%3D%3D&amp;ktr=1&amp;vi=1779120452877791742&amp;cq=7vvQWBsdl15fNW1a9d\_vNd7fga1JfVfB5&amp;pq=Roofing+Materials+For+Replacement&amp;vsid=4221220530017811&amp;sc=MA&amp;oksu=360&amp;prid=8PR11258V&amp;cid=8CUI1F766&amp;pid=8POKS64T4&amp;crid=228450093&amp;https=1&amp;rms=1779120453&amp;size=1154x689&amp;ksu=360&amp;ugd=4&amp;tsid=1005&amp;asn=209&amp;radepth=0&amp;kwep=JaPH%26JaW4PGzHbtF%26JgNPb.AZFAbb%26Q4U5PETH%26U%2FJPZfZEJzQZbZJQtQb1%2FHzFGtF%2FFTFQJ441.4G9%26U%2FJGPf9f5%25FIz%25Tefo95%25FIAET%25Tefo5U9%25FIb%25TeUogoN%25FIb%25TefoVm%25FIb%25Te1Ug%25FIzZ%25TeH%25FIcz%25TeZ%25FIcz%25TezZ%25FIcz%25Tezt%25FIb.bb%25TeJaW4oQC%25FIcG%25TeJaW4o9fNg%25FIcG%25TeGE%25FIb%25TeGH%25FIb%25TeGG%25FIb.ZZbT%25TeGF%25FIz.FbFE%25TeT%25FIb.bbEA%25TeA%25FIbHzAzz%25TezF%25FIb.bFTH%25TezE%25FIbHzAzG%25TeU39%25FIH.bbbb%25TeU3J9%25FIH.bbbb%25TeUJ3J9%25FIH.bbbb%25TeUJ3J9G%25FIH.bbbb%25TeU99U9%25FIH.bbbb%25TeNJW4%25FIGzHbtF%25TeJagN%25FIb.AZFAbb%25TeJaama%25FIH%25TevU5%25FIETH%25Te%2F4U5%25FIETH%25Teg9%25FIz.bbb%25Teg9oW4%25FIz%26UJP0vVf%2B%25GZ%2BO1N4fB%2B%25F-%2B0vVf%2BKVgNvmfVfB5%2B%25F-%2B7vvQWBs%26UJW4PHbbAHA%26UWPzHHTFzTzbt%26UV%2FPleEYlIp%25FI%26UV4PB3aa%26UgPH%26U5PETH%26U54PGZzETEGTZHHFzEtZtbGTFZFtbztFEbA%265k%2FaUPz%25Tez&amp;oscar=1&amp;tsce=L1233-S1233&amp;intcl=-e8E%3Auii.uiu.X9.uAA%7C8YEjM75EJ%3AQUE&amp;mprpslog=12VaGvIlbl2bpw4Nf4dmgKgjIbBdXo7DdtX\_LC5E3ChEbzYkN8QJwkpl39PIIJhBN7Q\_CeqFfrBaOxH3IbzRD6sv2-TlAklNBiSofIKdhutmfRKZQv\_mK0q\_\_QTdJYvEVnVjJCpI7tIFFWuajvzV\_nDpn4XYG757jtTqgJ9SzWdSuWlMbBk\_Tg8m-saQatYII8tpSCMwSLE=&amp;acid=undefined&amp;verid=&amp;sbdrId=&amp;hvsid=00001779120452613012627481609373&amp;vgd\_ifrmode=03&amp;&amp;fp=m3U1K237Z0DkgtFh9dNLvwlP5O1UbNcSk6PwcJNsRr6pwFWSrSHgXeNkKOAXxJxjArAKod3Sbqsa9QuBBhqAzfEBbaPCkTFXbCgfgKamfXrdTI\_y4rSA39R6rbYJuxwCG-kxnbD8CnJxr1uKCRJ6l6ycnevMoi72&amp;cme=-JjkHR0z5qWvFu1CJgk-Msbix\_ITSzYivqM9\_MQs2ZnEHfmp-jG7uQwP7ld9TCGgf8OAtjov4FwRFqUKmhOPrJoCWeRfbJ37pvqYEbYGanY6kvRlZl9poMyGIzTuHx2ygexChnstGpMyhTXyihk2mnh4eACm1dn6Tu3cI73zADXPgQgpwlUfrWjQKpxnns4YEyWXkDvri5Hw\_F1Anqm3S1AY1XDqkushPq8--KbB4NU5xmcl9beNmEqYKsPuUa2UbW0rVQzFsOQ%3D%7C%7CWOR44ZnjshyX0FEZj6c52uG8KGTsvju\_%7CnAS8-alJlhclmOAD15qG9zHan5Du-Vkizm-Gg51oI79sFSwJ2g4-zIuOkFgLUKVvR6IfqiojqYahO6kh2QmlWH9fbPY0U0lgHqeDQbUHJyBOuhi4xxY6O0GlMATSe\_pU%7Cb8KlCmE6kTENKxSBIehsQLbXBNKeHPZV%7CfkD7Q3FHGE5v7ely0NhJKUiINUhcRJQYwcz0AzUq6i4oFcBJ6Wxzhbb\_qDhdc8-KB46Z6mUUgZd9hRxdt6uugbkko-K6E1Ikiht3XPrRnnoT8IZNPhKQBRYeXuSGrfO5ArXSj6ouANGEKPi\_69xFloDNmHUWZTqwsVnMw-uY4HZ4WeLbHn17HbpBbj1wuYtWJRo9XAGXvdbGV0S83N1FwITeybnGk2EA5cfZVTQq\_W2kLYvCBttVUMR4vdlISVjcopVvVD1pGEB14DmSyDNMFrpWbIvT14D\_MEPUr5y37Bv4O1JcB0mvlx2USAYWsGvatgk-4\_qOSlpgbEJOw\_jXBUb4jScni9s034HNbVK6TK9I2fA8fGRqok2ncJ2rR3kE2v-MLa1KZC6cshTALFPTLkcqlDtyQTqfU460OPBhLs\_FSgJqXvJRZW-EqrI6Aou2xqad4KrM8C11qgsFlSdwYLnWzcp-9jMfKDlRmL53w9LRzYXJv\_oYVM5d00vujSYvavXTHIAFHY1vPd25ChWa2IdDx2e3c0nN1MWudCaPHSeZqQTntZckqfauludd00d67pZWcr4TkRciYVcHjjoaWLGw9lZOgywStZQRBlm\_UBWrVLFm3X5JrgjY3Fxp9fWFdHNaUCqOy8OhLAf7xuHT1ZLDyAAFrK6wQWAFjcw62fP0hfqpKw483WSWKbZfCl8UDDzlroYrN5exNMGss8B-Zo\_gQrmk6-bvEPjQQPuan3fkmXjFpeInSw084quOaglIqeCW5QIR7ApNwX1CDLQ\_BUBds\_IRxqriI8xwDQRT4B-YYsQpLSdqBSULLcFdzQ8iHRirK\_9kgmDNxPZWHqT55oJY28pxksw2ZO\_MyFIgvqOSQpJAPFrqwYgRAzjKKkZ0gvcYph4sKTY%3D%7C&amp;bd=-7%231080%231920&amp;lgpl=EEe8%3AfuXfFFFF9XfXhWu9uiu%7CBjQ7E%3A9%7CeQ7L8O%3AHffuff9XA99uhWuu%7CQNQeJL%3AAfAW%7Cw8Yyjy%3AC909oa9C9ob9%7CN1NwJMYJ71O171%3A%7B%22UGG%22%23\*k1jQJ%7D%7CU1Nm8z7mQQ%3Ak1jQJ%7CNkxO%3AfXu9Au%7CmE7mx7%3A9%7CjfQwjO%3Au%7C1UN8E%3Ahu.9.Fi.uhW%7CmLJ%20k%3AmzJ%7CmLJQk%3AmzJ%7CmNw%3A9%7CLJzQ8lJ%3AufhiMXXi%7CQNLMw%3Au9W9%7CQNLMB%3Auif9%7CNmjMQNw%3Aj%7CJN7%3AAy%7CGJ%3A9&amp;ure=1" class="dak5 anchorhref" data-proc-kwd="1" target="\_blank" data-proc-event="1"></a> </li> </ul> </div> <div class="footer"> <footer class="footer-links"> <a href="https://skenzo.com/sk-privacy.php" target="\_blank">Privacy policy</a> </footer> </div> </div> </div> <script> var pubUrl = "https://viproofingbrisbane.com.au/?fp=-7&tr\_uuid=20260519-0207-289e-89ba-d0d8b334fe5a"; var dynamicDomainName = new URL(pubUrl).searchParams.get("dn"); var fallbackDomainName = "viproofingbrisbane" + "." + "com.au"; var domainName; if(dynamicDomainName) { domainName = dynamicDomainName; } else { domainName = fallbackDomainName; } document.querySelector(".wrapper .heading").textContent = domainName; document.querySelector(".wrapper .heading").style.visibility = "visible"; </script> <script>var $01,$00;!function(){"use strict";var i={},a={};function u(t){return"function"==typeof t}$01=function t(r,n){var o,c,e=[];for(c in r)r.hasOwnProperty(c)&&("object"==typeof(o=r[c])||void 0===o?e.push(o):(void 0===i[o]&&(i[o]=t(a[o].deps,a[o].callback)),e.push(i[o])));return u(n)?n.apply(this,e):e},$00=function(t,r,n){if(u(r)&&(n=r,r=[]),void 0===(o=t)||""===o||null===o||(o=r,"[object Array]"!==Object.prototype.toString.call(o))||!u(n))return!1;var o;a[t]={deps:r,callback:n}}}();$00("util",[],function(){"use strict";var t=[],r=window.scVars&&window.scVars.isSrcfull,n=window.scVars&&window.scVars.jtag;function e(n,t){var r,e,o="",i=!!t,u=i?t:n;for(r in u)u.hasOwnProperty(r)&&(i&&(r=t[r]),a(n[r]))&&("object"!=typeof(e=n[r])||!1!==e.isUrlEntity)&&(o+=p(r,"object"==typeof n[r]?n[r].value:n[r]));return o}function o(n,t){for(var r,e={},o=n.split("&"),i=o.length;i--;)c((r=o[i].split("="))[0])&&(e[r[0]]=t?$(r[1]):r[1]);return e}function u(n){return"[object Array]"===Object.prototype.toString.call(n)}function i(n){return"function"==typeof n}function c(n){return"string"==typeof n&&""!==n}function a(n){switch(typeof n){case"string":return c(n);case"object":return null!==n;case"number":case"boolean":return!0;default:return!1}}function f(){return String.fromCharCode(100,111,99,117,109,101,110,116)}function s(){if(!r){var n;try{window.parent&&"object"==typeof window.parent.\_mNDetails&&(n=window.parent)}catch(n){}return n}}function p(n,t){return c(t)||"number"==typeof t?"&"+encodeURIComponent(n)+"="+encodeURIComponent(t):""}function l(n,t){if(a(n)){var r=0,e=n.length;if(u(n))for(;r<e;r++)t.call(n[r],n[r],r,e);else for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&t.call(n[r],n[r],r,0)}}function w(n){return n&&"object"==typeof n&&!u(n)}function h(n,t,r){void 0===t&&(t=9);for(var e="fnAtVWuFLkzK7/pxsTUlChSE-Q\_Pj=wb4ogM0dvBGHmyc9OeRZqY5NiaJD2 3XI816r",o=(c(r)&&(e=r),n+="",""),i=0;i<n.length;i++){var u=n.charAt(i),a=e.indexOf(u);o+=0<=a?e.charAt((a+t)%e.length):u}return o}function d(n,t){var r=n.split("?");if(c(t)&&1<r.length){n=r[0]+"?","&"!=t[t.length-1]&&(t+="&"),n+=t;for(var e=1;e<r.length;e++)n+=r[e]}return n}function $(t){try{return decodeURIComponent(t)}catch(n){return t}}function y(n,t){return!!c(n)&&c(t)&&-1!==n.indexOf(t)}return{$4m:function(){if(n)return!1;if(!r)try{if(window.frameElement)return!1}catch(n){}return!0},$4n:function(){var n=navigator.userAgent;return(y(n,"Trident")||y(n,"MSIE"))&&a(n=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(n))&&a(n[1])?parseFloat(n[1]):-1},$4o:y,$4p:i,$4q:c,$4r:a,$4s:function(n){return a(n)&&!isNaN(n)},$4t:function(n,t){return n.replace("x",t=t||"\_")},$4u:function(n,t){t=!!t||!1;var r=n.indexOf("?");return r<0?{}:o(n.substring(r+1),t)},$4v:o,getLayer1WindowObject:s,$4w:function(){var n=s();if(a(n))return n[f()]},$4x:function(){var n=null;return n=window&&window.top?window.top[f()]:n},$4y:f,$4z:e,$50:p,trim:function(n){return n.trim()},$51:new function(){var n,t={},r=!1;this.start=function(){n=(new Date).getTime(),r=!0},this.stop=function(){(new Date).getTime(),r=!1},this.diff=function(){return(new Date).getTime()-n},this.tick=function(n){t[n]={},t[n].startTime=r?this.diff():-1},this.getTime=function(n){return t[n]?this.diff()-t[n].startTime:-1}},$52:function(n,t,r){var e=document.createElement("script"),o=document.getElementsByTagName("script")[0];e.type="text/javascript",n&&""!=n&&(e.src=n),i(t)&&(e.onload=t),i(r)&&(e.onerror=r),o.parentNode.insertBefore(e,o)},$53:function(n){for(var t in n)if(n.hasOwnProperty(t))return!1;return!0},$54:w,$55:function(n){var r;return w(n)?(r={},l(n,function(n,t){(a(n)||i(n))&&(r[t]=n)}),r):n},$56:function(n,t){return Math.floor(Math.random()\*(t-n+1)+n)},$57:function(n){return t[n]||""},$58:function(n){t[n]=(new Date).getTime()},$59:h,$5$:function(n,t,r){return h(n,r.length-(t=void 0===t?9:t),r)},$5A:function(n,t,r){return d(n,t+"="+encodeURIComponent(r)+"&")},$5B:d,$5C:function(n,t){var r,e,o={};for(r in n)n.hasOwnProperty(r)&&(o[r]=n[r]);for(e in t)t.hasOwnProperty(e)&&(o[e]=t[e]);return o},$5D:function n(t,r){var e={},o=w(t),i=w(r);if(o||i){if(!o&&i)return r;if(o&&!i)return t;for(var u in t)t.hasOwnProperty(u)&&(e[u]=t[u]);for(var u in r)r.hasOwnProperty(u)&&(w(t[u])&&w(r[u])?e[u]=n(t[u],r[u]):e[u]=r[u]);return e}return{}},each:l,$5E:u,$5F:function(n,t){if(u(n)){t=t.toUpperCase();for(var r=0;r<n.length;r++)if(n[r].toUpperCase()==t)return!0}return!1},truncateUrl:function(t,n,r){r=r||!1;var e=10;for(-1!==n&&(t=t.substring(0,n=r?n:n&&999<n?n:4e3));0<e--;)try{decodeURIComponent(t);break}catch(n){t=t.substring(0,t.length-1)}return t},any:function(n,t){if(a(n)){i(t)||(t=function(n,t){return!!n});var r,e=0,o=n.length;if(u(n)){for(;e<o;e++)if(a(r=t.call(n[e],n[e],e)))return r}else for(e in n)if(n.hasOwnProperty(e)&&a(r=t.call(n[e],n[e],e)))return r}},$5G:$,$5H:function(n){n=$(n);var t=new RegExp("^http(?:s)?://([^/]+)","im");return(n=n.match(t))?n[1].toString():""},$5I:function(){return!(!window.history||!window.history.replaceState||"function"!=typeof window.history.replaceState)},$5J:e,$5K:function(){if(!r){var n;try{window.parent&&"object"==typeof window.parent.\_mNDetails&&(n=window.parent),window.parent&&window.parent.parent&&"object"==typeof window.parent.parent.\_mNDetails&&(n=window.parent.parent)}catch(n){}return n}},$5L:function(n){return c(n)?encodeURIComponent(n):""},$5M:function(n,t){return n.getElementsByClassName(t)},$5N:function(n,t){a(n)&&l(n=Array.prototype.slice.call(n),t)},$5O:function(n,t){return t=t.replace(/[\[\]]/g,"\\$&"),t=new RegExp("(&"+t+"=)([^&]+)"),n.replace(t,"")},$5P:function(n,t){var r;return c(n)&&c(t)?((r=new URL(n)).hostname=t,r.href):n},$5Q:function(n,t,r){if(!w(n)&&!u(n))return r;for(var e=n,o=0;o<t.length;o++){var i=t[o];if(!e.hasOwnProperty(i))return r;e=e[i]}return e},$5R:function(n){var t;try{t=$01([n])[0]}catch(n){t=null}return t}}});$00("domutil",["util"],function(i){var t=window.scVars&&window.scVars.jtag;function e(){try{var t=i.$4x();if(t&&t.documentElement&&t.documentElement.scrollHeight)return t.documentElement.scrollHeight}catch(t){}return""}function r(t){try{if(t&&t.top&&t.top.document)return!1}catch(t){}return!0}function n(t,n){try{if(i.$4q(n)){var e=t.document;if(void 0!==t["inner"+n])return t["inner"+n];if(e.documentElement&&void 0!==e.documentElement["client"+n])return e.documentElement["client"+n];if(e.body&&void 0!==e.body["client"+n])return e.body["client"+n];if(t.contentDocument&&void 0!==t.contentDocument.body["client"+n])return t.contentDocument.body["client"+n]}}catch(t){}return""}function o(t){return n(t,"Width")}function c(t){return n(t,"Height")}function u(t,n){return t&&n?i.$4t(Math.round(t)+"x"+Math.round(n)):i.$4t(o(window)+"x"+c(window))}return{$4B:function(t,n){i.$4q(n)&&!t.classList.contains(n)&&(t.className+=" "+n+" ")},$4C:function(t,n){return t.className=t.className.replace(new RegExp(n,"g"),"").replace(/\s{2,}/g," ").replace(/^\s\s\*/,"").replace(/\s\s\*$/,""),t},$4D:e,$4E:r,$4F:function(){var t="",n="";return window&&window.screen&&(t=window.screen.height||t,n=window.screen.width||n),{height:t,width:n}},$4G:c,$4H:o,$4I:u,$36:function(t){var n={};try{t||!1===r(window)&&(t=function t(n,e){try{var r;n!=top&&n.frameElement&&n.frameElement.getBoundingClientRect()&&(r=n.frameElement.getBoundingClientRect(),e.x+=r.x,e.y+=r.y,e.width+=r.width,e.height+=r.height,e=t(n.parent,e))}catch(t){}return e}(window,{x:0,y:0,width:0,height:0})),t&&(t.x||t.y)&&(n.x\_pos=Math.round(t.x),n.y\_pos=Math.round(t.y)),t&&(t.width||t.height)&&(n.rensize=u(t.width,t.height))}catch(t){}return n.rensize||(n.rensize=u()),n.ren\_page\_h=e(),n},$4J:function(t){return i.$4r(t.origin)?t.origin:i.$4r(t.protocol)&&i.$4r(t.hostname)?t.protocol+"//"+t.hostname:void 0},$4K:function(t,n){i.$4q(n)&&t.setAttribute("target",n)},$4L:function(){return t?document.shadowHost||document.querySelector('[id^="\_mN\_main\_"]'):window.frameElement},$4M:function(r,t){i.each(t,function(t,n){var e;"string"==typeof t&&t.includes("!important")?(e=t.replace("!important","").trim(),r.style.setProperty(n,e,"important")):r.style.setProperty(n,t)})}}});$00("hintutil",["util"],function(c){return{$5i:function(e,t,n){if(c.$4q(t))try{var r=document.createElement("link");r.rel=e,r.href=t,c.$4q(n)&&(r.crossOrigin=n),(document.head||document.getElementsByTagName("head")[0]).appendChild(r)}catch(e){}},$5j:function(e){try{return document.createElement("link").relList.supports(e)}catch(e){}return!1}}});$00("commonconstants",[],function(){"use strict";function $(){}return $.$09={$0Y:"rand",$0Z:"keywordsLoadTimeStamp"},$.$0$={$0\_:"winCollectionSet",$0a:"blockHoverImpression",$0b:"L3SF::",$0c:"L3SF"},$.$0A={$0d:"winProv",$0e:"subBdr",$0f:"ext\_win",$0g:"is\_native",$0h:"natAdCode",$0i:"refreshConfig",$0j:"refreshImp",$0k:"bidData",$0l:"matchString",$0m:"bid",$0n:"rtbsTime",$0o:"winReason",$0p:"aid",$0q:"logFunc",$0r:"dfpTgt",$0s:"mnAxbx"},$.$0B={$0t:"92"},$.$0C={$0u:"GENERIC",$0v:"RA",$0w:"ADS"},$.$0D={ADS:"internal",FADS:"internal",$0x:"web",$0y:"kwds",$0z:"external"},$.$0E={ADS:"ad",$0y:"keyword",$0z:"external",$10:"native"},$.$0F={$11:"t w x y z",$12:"% %22 %2c %3a %20"},$.$0G={$13:"lgpl",$14:"lgplp",$15:"rtlg",$16:"rtlgp",$17:"vgd\_",$18:"vgde\_",$19:"rensize",$1$:"erpm",$1A:"scr\_h",$1B:"scr\_w",$1C:"vstrid",$1D:"l2type",$1E:"optout",$0k:"bdata",$1F:"oathbf",$1G:"ect",$1H:"resdnv2",$1I:"col\_sch"},$.LANDING\_PAGE\_DWELL\_TIME\_TRACKING={$1J:"tsop",$1K:"atvt",$1L:"aivc",$1M:"aivta",$1N:"view\_id",$1O:"evtn",$1P:"interval",$1Q:"timeout",$1R:"pagehide",$1S:"page\_id",$1T:"kwof",$1U:"bfcache"},$.CHECKPOINT\_TRACKER={CORE:"scrr-core",$1V:"scrr-kwdprc",$1W:"scrr-bfpv",$1X:"scrr-loginit",$1Y:"scrr-handlelog"},$});$00("eventlib",["util","commonconstants"],function(c,a){"use strict";var o={},i=!1;function r(t,n){var e,n=(n=n||{}).capture||!1;return i?(e={capture:n},c.$5F(["touchstart","touchmove"],t)&&(e.passive=!0),e):n}function u(t,n){(c.$4q(t)||c.$4p(n))&&(o[t]=o[t]||[],o[t].push(n))}function v(t,n){c.$4q(t)&&c.each(o[t],function(t){t.call(null,n)})}function $(t,n){var e,i,a="live\_"+(t||"gbl");o[a]=o[a]||{},o[a]&&1===o[a].$4N?(e=n,i=o[a].$4O||{},c.$4p(e)&&e(i)):(o[a]={$4P:1},u(t,n))}try{var t=Object.defineProperty({},"passive",{get:function(){i=!0}}),n=function(){};window.addEventListener("mn",n,t),window.removeEventListener("mn",n,t)}catch(t){}return{$3s:function(t,n,e,i){t.addEventListener?t.addEventListener(n,e,r(n,i)):t.attachEvent&&t.attachEvent("on"+n,e)},$4Q:function(t,n,e,i){t.removeEventListener?t.removeEventListener(n,e,r(n,i)):t.detachEvent&&t.detachEvent("on"+n,e)},$0J:function(t,n,e,i){try{if(!c.$4m())return void window.parent.\_mNDetails.triggerAdTagEvent(n,t,e,i)}catch(t){}(t={type:t,mnEvnId:n,preventDelete:e,params:i||{},vi:window.\_mNL3&&window.\_mNL3.vi?window.\_mNL3.vi:""}).params.l3Src=1,window.parent.postMessage(JSON.stringify(t),"\*")},addToEventQueue:u,$4R:v,$4S:function(t,n){c.$4q(t)&&(v(t,n),o[t]=[])},$4T:function(t,n,e){var i;c.$4m()?$(a.$0$.$0b+t,e):(i=c.$5K())&&i.\_mNDetails&&i.\_mNDetails.$4W&&i.\_mNDetails.$4W(t,n,function(t,n){try{e.call(null,n)}catch(t){}})},$4U:function(t,n,e){var i;c.$4m()?u(a.$0$.$0b+t,e):(i=c.$5K())&&i.\_mNDetails&&i.\_mNDetails.addToEventQueue&&i.\_mNDetails.addToEventQueue(t,n,function(t,n){try{e.call(null,n)}catch(t){}})},$4V:function(t,n){var e="live\_"+(t||"gbl"),i=(o[e]=o[e]||{},o[e]&&1===o[e].$4P);o[e]={$4N:1,$4O:n},i&&v(t,n)},$4W:$}});$00("cookie-util",[],function(){return{mngc:function(e){try{var n,t=document.cookie.indexOf(e+"="),o=t+e.length+1;return t||e==document.cookie.substring(0,e.length)?-1==t?null:(-1==(n=document.cookie.indexOf(";",o))&&(n=document.cookie.length),unescape(document.cookie.substring(o,n))):null}catch(e){return null}},mnsc:function(e,n,t,o,c,i,u){try{u=u||"lax";var r=new Date,a=(r.setTime(r.getTime()),"none"===u.toLowerCase()&&(i=!0),t=t&&1e3\*t\*60\*60\*24,new Date(r.getTime()+t));document.cookie=e+"="+escape(n)+(t?";expires="+a.toGMTString():"")+(o?";path="+o:"")+(c?";domain="+c:"")+";samesite="+u+(i?";secure":"")}catch(e){}}}});$00("urlutil",["util"],function(e){"use strict";function u(n,t,r){n=n.split(/#(.\*)/);return n[0]+"&"+t+"="+r+(e.$4r(n[1])?"#"+n[1]:"")}function i(n,t){t=new RegExp("([&?])"+t+"=[^&#]\*(&?)","gi");return n.replace(t,function(n,t,r){return"?"===t||"&"===r?"&"===t?r:t:""})}function r(n,t){var r="";return e.$4q(n)&&(n=n.split("&"),e.each(n,function(n){2===(n=n.split("=")).length&&n[0]==t&&(r=n[1])})),r}return{$4a:u,$4b:function(n,t,r){return(n=n.split(/#(.\*)/))[0]+"#"+(e.$4r(n[1])?n[1]:"")+"&"+t+"="+r},$4c:function(n){return"https:"==n.substring(0,6)?"https":"http"},$4d:i,$4e:function(n,t){var r=n.split("#");return r.length<2?n:(n=new RegExp("(^|&)"+t+"=[^&]\*(&|$)","gi"),t=r[1].replace(n,function(n,t,r){return"?"===t||"&"===r?"&"===t?r:t:""}),r[0]+"#"+t)},$4f:function(n,t){return!e.$4q(n)||(n=n.split("#")).length<2||!e.$4q(n[1])?"":r(n[1],t)},$4g:function(n,t,r){return n=i(n,t),n=i(n,r),u(n=e.$5A(n,t,n.length),r,"1")},$4h:function(n,t,r,e){return r=new URL(r,n+t),n=new URLSearchParams(e),r.search=n.toString(),r.toString()},$4i:function(n,t){return new URLSearchParams(n).get(t)},$4j:function(n,t){var r;return e.$4q(t)?(r=n.split(/#(.\*)/),t="&"===t[0]?t:"&"+t,(-1!==r[0].indexOf("?")?r[0]:r[0]+"?")+t+(e.$4r(r[1])?"#"+r[1]:"")):n},$4k:r}});$00("scsVarAdapter",["util","cookie-util","urlutil"],function(s,t,l){"use strict";var n,i,o,a,e,c,r,d,p,$,m,v,w,H,f,u,h,g,N,\_,D,b,L,A,C,I,V,k,q,F,O,P;return P=window.scVars,s.$4r(P)&&(s.$54(window.olaVars)&&(F=(P=s.$5D(P,window.olaVars)).zola,s.$5Q(P,["mp","misc","bdata"],"")&&"1"===s.$5Q(F,["be"],0)&&(O=P.mp.misc.bdata,O=s.$5$(O,F.bShift,F.bKey),P.mp.misc.bdata=O),window.merVars=P),n=P.\_mNL3,i=P.mp,o=P.pvurl,P.tpctf&&(F=s.$5H(window.location.href),t.mnsc("cmc","test",1,"/",F,"","none"),O=s.$4q(t.mngc("cmc")),t.mnsc("cmc","",-1,"/",F,"","none"),t=o,k=V=O,o=s.$4q(t)?(q=-1!==t.indexOf("?")?"&":"?",t+q+"vgd\_tpctf="+encodeURIComponent(k?"1":"0")):t,V||(P.vsid=null,o=l.$4d(o,"vsid"))),q=P.lPvImd,k=P.pvend,V=P.pvHConf,a=P.rtbLHConf,e=P.ntvKwAsts,c=P.ntvAdAsts,m=P.kwdTl||!1,r=function(t){s.$4q(t.lHost)&&-1===t.lHost.indexOf("//")&&(t.lHost="//"+t.lHost);s.$4q(t.plrHost)&&-1===t.plrHost.indexOf("//")&&(t.plrHost="//"+t.plrHost);return t}(P.lc||{}),d=P.vsid,p=P.bvsid,w=P.tsce,$=P.kwdTarget,v=P.l3d||{},H=P.lpipe||{},f=P.pvlpipe||{},u=P.ssmCnf||{},h=P.locHashP||{},g=P.scsver||"",D=P.l2mc||{},b=P.clgflag||!1,L=P.pvImgBcn||!1,N=P.imc||{},A=P.vimpd||{},\_=P.zola||{},C=P.l1host||"",I=P.l2host||"",window.\_mNL3=n),{$2A:o,$2B:k,$2C:q,$2D:V,$2E:a,$2F:(t="undefined"!=typeof viForJtag&&viForJtag||null)&&\_mNDetails&&\_mNDetails[t]&&\_mNDetails[t].$2F||i||{},locHash:function(){var t="";try{t=parent.\_mNDetails&&parent.\_mNDetails.getLocHash&&parent.\_mNDetails.getLocHash(n.crid,n.vi)||parent.\_mNDetails.locHash&&parent.\_mNDetails.locHash[n.crid]||parent.window.locHash||""}catch(t){}return t=t||window.location.hash}(),mNL3:n,$2G:r,$2H:d,$2I:p,tsce:w,$2J:e,$2K:c,$2L:$,kwdTl:m,l3d:v,lpipe:H,pvlpipe:f,locHashP:h,$2M:u,scsver:g,cage:(l=n&&n.vi||"",l=parseInt(l.substring(0,l.length-9)),P="1779113687",s.$4s(l)&&s.$4s(P)?Math.floor((l-P)/86400):""),$2N:function(t){return N[t]||{}},$2O:D,$2P:b,$2Q:L,zola:\_,vimpd:A,$2R:C,$2S:I}});$00("metaparamutil",["scsVarAdapter"],function(t){"use strict";return{init:function(){var s=t.$2F;return this.ndAdParams=s.ndadp||{},this.meta=s.meta||{},this.misc=s.misc||{},this.abf=s.abf||{},this.abss=s.abss||"",this.keywords=s.keywords||[],this.log=s.log||{},this.lper=s.lper||100,this.dlper=s.dlper||null,this.abpl=s.abpl||0,(s=s.ntc)&&(this.requiredAdsCount=s.adsCount||0,this.kbbImageSize=s.kImgS||"",this.nativeMiscParams=s.misc||{}),this}}});$00("browserhinter",["metaparamutil","util"],function(e,r){"use strict";function i(n){var t=e.misc.brwHint;if(t&&t.linkpf&&r.$4q(t.linkpf.event)&&document.location.protocol==n.protocol){t=$0H.$3F;if(t.$0I()&&t.$5k())return!0}return!1}return{$5g:function(n){var t,r;e.misc.brwHint&&(t=e.misc.brwHint,n=n,t.preConn&&1==t.preConn.enable&&(r=$0H.$3E).$0I()&&r.$5k()&&r.$5m(t.preConn.event,n,t.preConn.addHosts),i(n))&&$0H.$3F.$5l(t.linkpf.event,n)},$5h:i}});$00("preconnect",["hintutil","eventlib","util","domutil"],function(t,e,i,r){"use strict";var f={},$=[];function s(n){i.each(n,function(n){t.$5i("preconnect",n),f[n]=1})}function u(n,t,c){var o=r.$4J(t),u=$.concat(o);v(o)||(s(u),e.$4Q(t,"mouseover",c),e.$4Q(t,"touchstart",c),setTimeout(function(){i.each(u,function(n){f[n]=0}),a(t)},5e3))}function a(n){var t,c=r.$4J(n),o=(t=n,function(n){u(0,t,o)});v(c)||(e.$3s(n,"mouseover",o),e.$3s(n,"touchstart",o))}function v(n){return 1===f[n]}return{$5m:function(n,t,c){$=c||[],"hover"==n&&a(t)},$5k:function(){return t.$5j("preconnect")}}});$00("logutil",["util"],function(e){"use strict";return{$2T:e.$52,$2U:function(n){for(var t=0,r=(n=e.$5E(n)?n:[n]).length;t<r;t++)(new Image).src=n[t]},$2V:function(n){e.$4r(n)&&((new Image).src=n)},$2W:function(){return!!e.$4p(window.navigator.sendBeacon)}}});$00("rtbsdatautil",["util","metaparamutil","commonconstants"],function(i,t,r){"use strict";var d={};function e(){return d.rtbsd}function u(n){var r,t;return 4==e()?"":(r="",(t=d.prvDet)&&i.$4r(t[n])?t[n]:r)}return{$25:u,$26:function(n,r){d[n]=r},$27:function(){var n=u(r.$0A.$0d);return!i.$4r(n)||t.misc.ybncaBidderId&&-1!==t.misc.ybncaBidderId.indexOf("|"+n+"|")},$28:function(){return u(r.$0A.$0d)==r.$0B.$0t},getRtbsDisableReason:e,$29:function(n){var r=t.misc.ybncaBidderId||"";return""!==n&&r&&-1!==r.indexOf("|"+n+"|")},$2$:function(n){var r=t.misc.adxBidderId||"";return""!==n&&r&&-1!==r.indexOf("|"+n+"|")}}});$00("l3receiver",["util","scsVarAdapter"],function(p,r){"use strict";var t,c,d,l,a,u,s,i;return{$1k:function(){return t||{}},$1l:function(e){return t.hasOwnProperty(e)?t[e]:""},$1m:function(){return i||{}},$1n:function(e){return(e?d:c)||{}},$1o:function(e){return(e?l:a)||{}},$1p:function(e){return(e?s:u)||{}},$1q:function(e){var n,o;n=e.l3d,o=r.l3d,n=n?JSON.parse(decodeURIComponent(n)):{},t=p.$5C(n,o=o||{}),c=e.pvl?JSON.parse(decodeURIComponent(e.pvl)):{},d=e.pvlp?JSON.parse(decodeURIComponent(e.pvlp)):{},l=e.clp?JSON.parse(decodeURIComponent(e.clp)):{},a=e.cl?JSON.parse(decodeURIComponent(e.cl)):{},s=e.aclp?JSON.parse(decodeURIComponent(e.aclp)):{},u=e.acl?JSON.parse(decodeURIComponent(e.acl)):{},i=e.lp?JSON.parse(decodeURIComponent(e.lp)):{}}}});$00("lochashutil",["util","metaparamutil","commonconstants","rtbsdatautil","domutil","l3receiver","scsVarAdapter"],function(u,n,c,a,e,s,d){"use strict";var i,o={},l={};function v(){var t,r=a.$25(c.$0A.$0l),r=(u.$4r(r)?l.vgd\_matchstr=r:u.$4q(l.matchstring)&&(l.vgd\_matchstr=u.$5L(l.matchstring)),$0H.$3c.$0I()&&(r=$0H.$3c.$3t(),u.$53(r)||(l=u.$5C(l,r))),a.$25(c.$0A.$0s)),r=(u.$4q(r)&&(l.axbx=r),l.twna||"0");e.$4E(window)&&(t=h(),f()?r=t?"5":"2":u.$4m()?r=t?"4":"3":t||(r="X")),l.vgd\_ifrmode=(l.infr||"0")+r}function $(){return window.locHash||window.location.hash||""}function t(){var t=$(),r=d.locHashP,t=u.$4u("?"+t.replace(/#/g,"&"),!0);return l=u.$5C(t,r),s.$1q(l),u.each(["rtbsd"],function(t){a.$26(t,l[t])}),l.prvDet&&a.$26("prvDet",JSON.parse(l.prvDet)),v(),p(l,["requrl","cref","clsKb","web\_view","dyc","dypgc","dypc","dynx","resdn","l1ch","l2ac","l1ac","infr","twna","l2wsip","drtbs","l2src","stime","startTime","dma","l2type","vgd\_vsidv","vstrid","vgd\_bdata","vgd\_sc","l3c","l3d","l3l","pvl","pvlp","clp","cl","acl","aclp","lp","buid","matchstring","l1hcsd","l2hcsd","sethcsd","vgd\_cdnh","vgd\_l1esid","vgd\_l1rhst","vgd\_eober","vgd\_uspa","vgd\_usps","vgd\_uspcs","vgd\_uspcss","vgd\_dfpmod","prvDet","exitinsl","tchkpts"],o)}function p(e,s,d){var i="";return u.each(e,function(t,r){var n,c;u.$5F(s,r)||(n=e,"bdrid"==(c=r).toLowerCase()&&a.$2$(n[c]))?(d&&(d[r]=e[r]),delete e[r]):i+=["&",r,"=",e[r]].join("")}),i}function r(t,r){return r=r||"",l[t]||r}function g(t,r){return r=r||"",o[t]||r}function f(){return 1==r("l2src")||1==g("l2src")}function h(){return 1==r("twna")||1==g("twna")}return{init:function(){i=t()},$1r:$,$1s:function(){return i},$1t:function(){return l},$1u:function(t){return r(t,!1)},$1v:r,$1w:function(){var r,t;return void 0!==n.misc.exclp&&u.$4q(n.misc.exclp)?(r=i,t=n.misc.exclp.split(","),u.each(t,function(t){r=u.$5O(r,t)}),r):i},$1x:function(t){i=i+"&"+t},$1y:function(t){return g(t,!1)},$1z:g,$20:function(){for(var t=["reflog","vsidtv"],r=p(u.$4u("?"+i.replace(/#/g,"&")),["adxbck","dms","acid","mmm","cmatchstring","kbbq","isiolc","vgd\_matchstr","hvsid"]),n=0;n<t.length;n++)r=r.replace("&"+t[n]+"=","&vgd\_"+t[n]+"=");return r},$21:f,$22:h,$23:function(){for(var t=["vgd\_uspa","vgd\_usps","vgd\_uspcs","vgd\_uspcss","vgd\_sc","vgd\_l1rakh","vgd\_l1rhst","vgd\_eober","vgd\_dfpmod"],r={},n=0;n<t.length;n++)u.$4r(o[t[n]])&&(r[t[n]]=o[t[n]]);return u.$4z(r)},$24:function(){var t=g("cref",!1);return t?"&ecref="+encodeURIComponent(u.$59(decodeURIComponent(t))):""}}});$00("hover",["util","eventlib","logutil","metaparamutil","commonconstants","lochashutil","l3receiver","loggingservice","scsVarAdapter","commonparamutil",window],function(t,i,c,n,r,d,a,m,s,v,o){"use strict";var e,g=document&&document.body||o,u=!1;function p(){var i=n&&n.misc&&n.misc.hN||"",c=n&&n.misc&&n.misc.lFN||"",r=function(){var i="lf=4",c={prid:n.meta.prid||"",crid:n.meta.crid||"",pid:n.meta.pid||"",cid:n.meta.cid||"",dn:n.misc.domain||"",chid:n.meta.chid||"",ugd:n.meta.ugd||"",cc:n.misc.country\_code||"",sc:o.\_mNL3&&o.\_mNL3.\_ip2allsc||"",gdpr:t.$4r(n.misc.privacy.gdpr)&&String(n.misc.privacy.gdpr)||"",uspenf:t.$4r(n.misc.privacy.uspenf)&&String(n.misc.privacy.uspenf)||"",mspa:t.$4r(n.misc.privacy.mspa)&&String(n.misc.privacy.mspa)||"",vi:o.\_mNL3&&o.\_mNL3.vi||"",abpl:o.mUtil&&o.mUtil.getABPFlag("val")||"",vsid:o.\_mNVsid||"",requrl:n.misc.requrl||"",hvsid:v.$1a(),bdrid:v.$1b().bdrid||"",subBdr:v.$1b().subBdr||"",vgd\_l2type:d.$1z("l2type")||"",vgd\_bid:a.$1l("bid")||"",vgd\_cdv:"1914",vgd\_cage:s.cage,vgd\_scsver:s.scsver,vgd\_tsce:s.tsce||"",vgd\_aref:a.$1m().aref||"",vgd\_arefsrc:a.$1m().arefsrc||"",vgd\_ydspr:a.$1l("ydspr")||""};navigator.connection&&(c.vgd\_cetp=navigator.connection.effectiveType,c.vgd\_cdlk=navigator.connection.downlink,c.vgd\_crtt=navigator.connection.rtt);return i=(i=(i+=t.$4z(c))+(n.meta.cme?"&cme="+n.meta.cme:""))+d.$20()}(),e="";return t.$4q(i)&&t.$4q(c)&&(e=i+"/"+c+"?"+r),e=t.$5A(e,"vgd\_len",e.length),e=m.$2i(e)}function l(){i.$4Q(g,"mouseover",l),!0!==u&&c.$2T(p())}return{init:function(){t.$4r(e)||(e=!0,i.$3s(g,"mouseover",l),i.addToEventQueue(r.$0$.$0a,function(){u=!0}))}}});$00("commonparamutil",["util","lochashutil","metaparamutil","commonconstants","rtbsdatautil","l3receiver"],function(t,u,d,e,$,i){"use strict";var c,r=window.\_mNL3&&window.\_mNL3.vi?window.\_mNL3.vi:"",n=window.\_mNL3&&window.\_mNL3.asnum?window.\_mNL3.asnum:"";return{$1Z:function(){return r},$1\_:function(){return n},$1a:function(){var r=u.$1t();return r&&r.hvsid?r.hvsid:"1000000003"},$1b:function(){var r,n,i={};return t.$4q(d.misc.frbgem)?(i.subBdr=u.$1v("sbdrId")||"",i.bdrid=d.misc.frbgem):t.$4q(d.misc.frBdrId)?(i.subBdr=$.$25(e.$0A.$0e)||"",i.bdrid=d.misc.frBdrId):(r=$.$25(e.$0A.$0d)||"",n={},t.$4q(d.misc.bdrId)?(n.subBdr=u.$1v("sbdrId"),n.bdrid=d.misc.bdrId):$.$29(r)?(n.subBdr=$.$25(e.$0A.$0e)||"",n.bdrid=r):$.$29(u.$1u("winProv"))&&(n.subBdr=u.$1v("subBdr"),n.bdrid=u.$1v("winProv")),i=n),i},$1c:function(){return!1},$1d:function(){return u.$1t().isiolc||"function"==typeof window.IntersectionObserver||"0"},$1e:function(){return!(!d||!d.misc||"1"!=d.misc.ignViewForAsnFlag)},$1f:function(){var r=t.$56(1,100),n=d.misc&&d.misc.igLpV||0;return 0<n&&r<=n},$1g:function(){return $.$27()&&2==d.misc.hide\_y},$1h:function(){var r,n;return void 0===c&&(r=t.$56(1,100),n=!t.$4r(i.$1l("logPv"))||i.$1l("logPv"),c=r<=d.lper&&n||-1!=decodeURIComponent(d.misc.purl||"").indexOf("mnet\_test")),c},$1i:function(){return 1===i.$1l("apCuNat")&&1===i.$1l("nmerr")},$1j:function(){try{return t.getLayer1WindowObject().\_mNDetails[r].\_cmL1Require(["mn-object"])[0]}catch(r){}return null}}});$00("abputil",["util","lochashutil","commonparamutil","metaparamutil","eventlib","scsVarAdapter","logutil"],function(c,r,a,n,i,d,o){"use strict";var p,l=!1,u=!1;function m(t){try{1==(n.misc.hab||!1)&&0==u&&(e={logid:"kfk",evtid:"adpl",tp:(e=t)||"NULL",fp:n.meta.fp,cid:n.meta.cid,crid:n.meta.crid,requrl:n.misc.purl,chid:n.meta.chid,vi:a.$1Z(),ugd:n.meta.ugd,cme:n.meta.cme,cc:n.misc.country\_code},e=d.$2G.lHost+"/log?"+c.$4z(e)+r.$20(),o.$2V(e+"&r="+(new Date).getTime()),i.$0J("hideAdFrames",a.$1Z(),!0,{viewId:a.$1Z(),type:"L3",L2:"1"}),u=!0)}catch(t){}var e}return{getABPFlag:function(t,e){var a,e=function(t){if(void 0!==p&&1===p)return p;var e=!1;try{a=("object"==typeof window.parent.winScope?window.parent.winScope:window.parent).\_mNDetails}catch(t){}var a=a&&a.\_mNABP||!1,i=0;return a&&n.abpl&&(i=0==a.checksRemain?(e=!a.error1&&a.error2?1:2,3):a.adBlockStatus?(e=a.adBlockStatus,1):(e=2,0),!t)&&(a=!0,a=(!c.$4q(n.misc.exclp)||-1===n.misc.exclp.indexOf("tdAdd[]"))&&a)&&r.$1x("tdAdd[]="+encodeURIComponent("|@|abp:"+i+":"+e)),p=e}(e);return n.abpl&&e?(a=e,l||1===a&&"function"==typeof window.appendCustomHeader&&(window.appendCustomHeader(),l=!0),1==e&&m(e),1==e&&n.abpl&&(e=n.abpl),"val"===t?e:"&abpl="+e):""},$2v:function(){return p}}});$00("colorschemeutil",[],function(){"use strict";return{$2l:function(){var e="na";return window.matchMedia&&(e="n",window.matchMedia("(prefers-color-scheme: dark)").matches?e="d":window.matchMedia("(prefers-color-scheme: light)").matches&&(e="l")),e}}});$00("renderinghelper",["util","eventlib","abputil","commonparamutil"],function(t,n,o,i){"use strict";return{$2q:function(){try{t.$4p(window.formatViewAfterLoad)&&window.formatViewAfterLoad(),window.adjustMnetIframeHeightToBodyProxyCall&&window.adjustMnetIframeHeightToBodyProxyCall()}catch(t){}},$2r:function(t){try{"function"==typeof window.formatview&&window.formatview(t)}catch(t){}},$2s:function(){try{"function"==typeof window.formatKeywordView&&window.formatKeywordView()}catch(t){}},changeAdFramesDimensions:function(t){try{var o=window.\_mNL3&&window.\_mNL3.vi?window.\_mNL3.vi:"";o&&t&&(t.height||t.width)&&(t.viewId=o,t.type="L3",t.L2="1",n.$0J("alterAdFrameDimension",o,!0,t))}catch(t){}},$2t:function(){try{var t=i.$1j();t&&(1!==o.$2v()&&t.util.addToEventQueue("adBlockPlusDetected","gbl",function(){o.getABPFlag()}),"function"==typeof t.\_custom.postRendering)&&t.\_custom.postRendering(window)}catch(t){}}}});$00("loggingpipeline",["util","commonconstants","l3receiver","metaparamutil"],function(d,h,P,C){"use strict";return function(){var i={},o={},u={},c={},t={},a={},$=h.$0G,f=/[|:]/,e=this;function l(n,r,e){var t,i;return t=n,i=r,d.$4q(t)&&!f.test(t)&&d.$4r(i)?[n.toLowerCase(),{value:r,enc:e}]:[]}function n(n){var i="";return d.each(n,function(n,r){var e=$.$17,t=n.value;!0===n.enc&&(e=$.$18,t=d.$59(t)),i+=d.$50(e+r,t)}),i}function m(e){var t=[];return d.each(e,function(n,r){t.push(r+":"+(r=e[r].value,r=d.$4q(r)?(r=r.replace(/\|/g,"#@")).replace(/\:/g,"#\*"):r))}),t}function r(n,r){n=m((n=n||!1)?o:i);return d.$4r(r)&&(n=n.concat(m(r))),d.$59(n.join("|"))}function p(n){var e="",t=$.$17;return d.each(P.$1n(n),function(n,r){e+=d.$4q(r)&&d.$4r(n)?d.$50(t+r,n):""}),e}function v(n,r){var e=n?a:t,n=d.$5C(P.$1o(n),e);return s(n=d.$4r(r)?d.$5C(n,r):n)}function g(n){return s(P.$1p(n))}function s(n){var e={};return d.each(n,function(n,r){r=l(r,n);2===r.length&&(e[r[0]]=r[1])}),e}e.addPairToCommonPipeline=function(n,r,e){var t=C.misc.lgprp||{},n=l(n,r,e=e||!1);2===n.length&&(t[r=n[0]]?o[r]=n[1]:i[r]=n[1])},e.addPairToPageViewLogPipeline=function(n,r,e){var t=C.misc.lgprp||{},n=l(n,r,e=e||!1);2===n.length&&(t[r=n[0]]?c[r]=n[1]:u[r]=n[1])},e.addCommonParamsFromL3ReceiverToPipeline=function(){d.each(P.$1m(),function(n,r){e.addPairToCommonPipeline(r,n)})},e.addClickLogParam=function(n,r,e){e=e||!1,d.$4q(n)&&d.$4r(r)&&(e?a[n]=r:t[n]=r)},e.$03=function(){return n(u)+n(i)+p()},e.$04=function(){return n(c)+n(o)+p(!0)},e.$05=function(){return d.$50($.$13,r(!1,v()))},e.$06=function(n){return d.$50($.$14,r(!0,v(!0,n)))},e.$07=function(){return d.$50($.$15,r(!1,g()))},e.$08=function(){return d.$50($.$16,r(!0,g(!0)))}}});$00("logginghelper",["util"],function(u){var e={},r="",t="",$="",i="";function o(n,r){return r=r||{},u.$4q(n)&&(void 0===r.$2e||r.$2e)&&(r.$2d?i+=d(n):$+=d(n)),e}function c(n,r,t){return t=t||{},u.$4q(n)&&u.$4r(r)&&(t.vgd?n="vgd\_"+n:t.vgda?n="vgda\_"+n:t.vgde&&(n="vgde\_"+n,r=u.$59(r)),o(u.$50(n,r),t)),e}function d(n){return("&"!==n.charAt(0)?"&":"")+n}return e={$2X:function(n){return r=n,e},$2Y:function(n){return u.$4q(n)&&(t+=d(n)),e},$2Z:c,$2\_:o,$2a:function(n,t){return u.each(n,function(n,r){c(r,n,t)}),e},done:function(){return u.$5B(r,i)+$+t}}});$00("chkpTimeUtil",["util","commonconstants","lochashutil"],function(o,c,a){return{$30:function(r,l){var t,s,e=Date.now(),n=(l=l||!1,a.$1z("tchkpts"));return o.$4q(n)?(n=JSON.parse(n),t={},s=o.$57(c.$09.$0Y),o.$4r(n.l1load)&&(t.l1load=n.l1load),t.l1exec=n.prel2-n.l1s,o.$4r(window.l2s)&&(t.l2load=window.l2s-n.prel2,t.scrrstart=s-window.l2s),t.scrrrender=r-s,l?t.scrrStartTimestamp=s:t.scrrexec=e-s,t):{}}}});$00("kwdextractor",["util"],function(e){"use strict";var i={$5Y:1,$5Z:2};function r(t){var n,r;return!!e.$4r(t)&&(n={dk:i.$5Y,mk:i.$5Z},r=e.$4q(t.id)?t.id.toLowerCase():"",e.any(n,function(t,n){if(-1!==r.indexOf(n))return t}))}function a(t){var n=this;n.anchor=t,n.type=r(t),n.position=function(t,n){if(t=t&&t.id,n=n==i.$5Y?"dk":"mk",e.$4q(t))return parseInt(t.replace(n,""))}(t,n.type),n.misc=function(t){var n={};try{n=t&&JSON.parse(t.getAttribute("data-misc"))}catch(t){}return n}(t),n.isValid=!!n.type,n.isValid&&(n.keyword=t.text)}return{$5\_:function(){var n,t=document.getElementsByTagName("a");return n=[],e.$5N(t,function(t){t=new a(t);t.isValid&&n.push(t)}),n},$5a:a,$5b:r,$5c:i}});$00("loggingservice",["util","commonparamutil","eventlib","renderinghelper","abputil","urlutil","lochashutil","metaparamutil","logutil","commonconstants","rtbsdatautil","domutil","loggingpipeline","l3receiver","scsVarAdapter","logginghelper","chkpTimeUtil","kwdextractor","colorschemeutil"],function(m,l,s,g,p,c,v,u,f,w,h,P,$,C,b,\_,d,Z,e){"use strict";var a,o,I,H=new $,y=!1;function T($,i){try{var e=P.$4H($),n=P.$4G($);if(e&&n)return";"+i+"\_w:"+e+";"+i+"\_h:"+n}catch($){}return""}function z(){var $,i=parseInt(v.$1z("stime")),e=parseInt(v.$1z("startTime")),n=(new Date).getTime(),t={},e=(isNaN(i)?isNaN(e)||($=e,t.ltimesrc="2"):($=i,t.ltimesrc="1"),isNaN($)||(t.ltime=n-$,t.rtime=o-$),t.etm=o-a,d.$30(o,!1));return m.$53(e)||(t.timeObj=JSON.stringify(e)),t}function R(){return!(l.$1g()||1==C.$1l("uhd"))}function q(){return $0H.$3a.$0I()?$0H.$3a.$45():""}function G(){$0H.$3N.$0I()&&$0H.$3N.$34();var $=!l.$1c();if($){y||(y=!0,g.$2q());try{s.$0J("onAdLoadComplete",u.meta.crid,!0)}catch($){}}if(l.$1h()){s.$4Q(window,"load",G),$0H.$3p.$0I()&&$0H.$3p.log(w.CHECKPOINT\_TRACKER.$1W);var i=0,e=(void 0!==window.adResult&&(i=adResult.length,void 0!==window.adCnt)&&!isNaN(window.adCnt)&&window.adCnt<=i&&(i=window.adCnt),b.$2A),n=b.$2B,t=b.$2D;if(!m.$4q(e))return;$0H.$3Z.$0I()||H.addPairToCommonPipeline(w.$0G.$19,P.$36().rensize);var d=$0H.$3L,a=$0H.$3\_,o=$0H.$3f,r=$0H.$3c,c=$0H.$3i,e=(\_.$2X(e),\_.$2\_(H.$04(),{$2d:!0}),$0H.$3n.$0I()&&(e=$0H.$3n.$5e(Z.$5\_()),m.each(e,function($){\_.$2Z("kwof[]",$)})),\_.$2Z("fp",u.meta.fp,{$2d:!0}).$2Z("cme",u.meta.cme,{$2d:!0}).$2a(l.$1b(),{$2d:!0}).$2\_(v.$20()).$2\_(p.getABPFlag()).$2\_((e=decodeURIComponent(v.$1v("kbbq")),m.$4q(l.$1\_())&&(e+="&asn="+l.$1\_()),m.$4q(e)?"&kbbq="+encodeURIComponent(e):"")).$2Z("vgd\_isiolc",l.$1d()).$2Z("vgde\_ydsp",q()).$2\_(H.$03()).$2\_("&tdAdd[]="+encodeURIComponent("uiparams="+function(){var $="";$+=T(window,"rend");try{$+=T(window.top,"win")}catch($){}return $}())).$2\_(v.$23()).$2Z("hvsid",l.$1a()).$2Z("rc",i).$2Z("rand",m.$57(w.$09.$0Y)).$2Z("bdrct",h.$25(w.$0A.$0m)).$2Z("bto",h.$25(w.$0A.$0o)).$2a((e={},m.$4q(i=h.$25(w.$0A.$0p))?e.vgd\_opp\_id=i:m.$4q(i=v.$1v("acid"))&&(e.acid=i),e)).$2Z("tdAdd[]","rtbsd="+v.$1v("rtbsd"),{$2e:v.$1u("rtbsd")}).$2Z("matm",m.$57("matm")).$2Z("iscont","0",{$2e:!!r.$0I()&&"2"==r.$3u()||-1!=v.$1s().indexOf("nocont=1")||l.$1f()||l.$1e()}).$2\_(a.$0I()?a.$5X():"",{$2e:R()}).$2Z("requrl",v.$1z("requrl")),\_.$2a(I,{vgd:!0}).$2a(z(),{vgde:!0}).$2a((i={},e=v.$1z("l1hcsd"),m.$4q(e)&&2==(e=e.split("!")).length&&(r=e[0]+"hcsd",i[r]=e[1]),i),{vgd:!0}).$2a($0H.$3J.$0I()?$0H.$3J.$3r():{},{vgd:!0}).$2a(((a={}).lapc=v.$1z("dypc"),a.lapgc=v.$1z("dypgc"),a.lac=v.$1z("dyc"),a.lanx=v.$1z("dynx"),a),{vgd:!0}).$2a(d.$0I()&&d.$44(),{vgd:!0}).$2a(o.$0I()&&o.$2y(),{vgd:!0}).$2Z("vs",function($){if(m.$4q(u.misc.ovs))return u.misc.ovs;return $.$0I()&&$.$2z()?"12":""}(o)).$2Z("l1btm",C.$1l("l1btm"),{vgda:!0}).$2Z("l1ch",v.$1z("l1ch"),{vgd:!0}).$2Z("mseg",h.$25("mnet\_segment"),{vgd:!0}).$2Z("rt",h.$25(w.$0A.$0n),{vgd:!0}).$2Z("lhl",v.$1r().length,{vgd:!0}).$2Z("pgid",C.$1l("pgid"),{vgd:!0}).$2Z("kclkp\_d",decodeURIComponent(C.$1l("kClkUP")),{vgd:!0}).$2Z("web\_view",v.$1z("web\_view"),{vgd:!0}).$2Z("csip",C.$1l("csip"),{vgd:!0}).$2Z("dfp\_tgt",(r=h.$25("dfpTgt"))&&window.JSON&&JSON.stringify&&JSON.stringify(r),{vgd:!0}).$2Z("sbSup",f.$2W()?"1":"0",{vgd:!0}).$2Z("drtbs",v.$1z("drtbs"),{vgd:!0}).$2Z("vsidv",v.$1z("vgd\_vsidv"),{vgd:!0}).$2Z("nrrs","38824",{vgd:!0}).$2Z("cntrdt",C.$1l("cntrdt"),{vgd:!0}).$2Z("bqs",C.$1l("bqs"),{vgd:!0}).$2Z("crefurl",decodeURIComponent(v.$1z("cref")),{vgd:!0}).$2Z("lpua",window.navigator.userAgent,{vgd:!0,$2e:u.misc&&1===u.misc.lpua}).$2Z("clkId",encodeURIComponent(C.$1l("clkIdQs")),{vgd:!0}).$2Z("cdeplbl",c.$0I()?c.$33():"",{vgde:!0}),\_.$2Y(n),\_.done()),e=U(e=$0H.zola.$0I()?$0H.zola.$47(e):e);e=t&&m.$4q(t.lenExHost)&&8700<e.length?function($){try{A($)?($=m.truncateUrl($,4e3),$+="&vgd\_end=3"):$+="&vgd\_end=1"}catch($){}return $}(e=m.$5P(e,t.lenExHost)):N(e),b.$2Q?f.$2U(e):f.$2T(e),u.misc.slpd&&(i=l.$1Z(),s.$0J("logPerf\_l1",i,!0,{vi:i,cid:u.meta.cid,hvsid:l.$1a(),bid:u.misc.bid}))}$&&g.$2t(),$0H.$3b.$0I()&&$0H.$3b.init(),u.misc.hbRACb&&s.$0J("adRenderingCompleted",l.$1Z(),!1,{}),m.$51.stop()}function i(){var $={logPageView:function(){G()}};if($0H.$3I.$0I())try{$0H.$3I.$3q($)}catch($){}}function n(){s.$4Q(window,"load",n),s.$0J("pushNotificationDetails",l.$1Z(),!0,{viewId:l.$1Z(),type:"L3",L2:"1",pid:u.meta.pid})}function t(){var $=function(){try{var $=(navigator.connection||navigator.mozConnection||navigator.webkitConnection).effectiveType||"";return $="slow-2g"===$?"s2g":$}catch($){}return""}();m.$4q($)&&H.addPairToCommonPipeline(w.$0G.$1G,$)}function N($){try{u.misc.trunLogUrl?($=m.truncateUrl($,u.misc.trunLogUrl),$+="&vgd\_end=2"):A($)?($=m.truncateUrl($,4e3),$+="&vgd\_end=3"):8700<$.length?($=m.truncateUrl($,8700),$+="&vgd\_end=5"):$+="&vgd\_end=1"}catch($){}return $}function U($){return m.$5A($,"vgd\_len",$.length)}function A($){return 4e3<$.length&&m.$5F(["8","9","10","11"],m.$4n().toString())}function r(){var $;function i($,i){for(var e,n,t=0;t<$.length;t++)e=$[t],n=i?w.$0G.$17+e:e,v.$1y(n)&&H.addPairToCommonPipeline(e,v.$1z(n))}H.addCommonParamsFromL3ReceiverToPipeline(),H.addPairToCommonPipeline(w.$0G.$1C,b.$2H),$=m.$5G(h.$25("bidData")),b.$2P?m.$4q($)?H.addPairToCommonPipeline(w.$0G.$0k,$,!0):H.addPairToPageViewLogPipeline(w.$0G.$0k,u.misc.bdata,!0):H.addPairToCommonPipeline(w.$0G.$0k,$||u.misc.bdata,!0),m.each(b.lpipe,function($,i){H.addPairToCommonPipeline(i,$)}),m.each(b.pvlpipe,function($,i){H.addPairToPageViewLogPipeline(i,$)}),(I=($0H.$3Z.$0I()&&!window.frameElement?$0H.$3Z:P).$36()).rensize&&(H.addPairToCommonPipeline(w.$0G.$19,I.rensize),delete I.rensize),$=P.$4F(),H.addPairToCommonPipeline(w.$0G.$1A,$.height),H.addPairToCommonPipeline(w.$0G.$1B,$.width),H.addPairToCommonPipeline(w.$0G.$1H,C.$1l(w.$0G.$1H)),H.addPairToCommonPipeline(w.$0G.$1I,e.$2l()),i(["dma",w.$0G.$1C,w.$0G.$1D,"resdn"],!1),i(["cdnh","l1esid"],!0),t(),m.each({ydata:{$2g:!0},be:{$2g:!1},bidparams:{$2g:!0,$2h:"ebidp"}},function($,i){var e=C.$1l(i);m.$4r(e)&&(i=$.$2h||i,e=m.$54(e)?JSON.stringify(e):e,H.addPairToCommonPipeline(i,e,$.$2g))})}return{init:function(){a=(new Date).getTime(),$0H.$3p.$0I()&&$0H.$3p.log(w.CHECKPOINT\_TRACKER.$1X),r(),u&&s.$0J("SCRR::LoggingParams",l.$1Z(),!0,{params:{vgd\_bid:u.misc?u.misc.bid:"",vgd\_pdtid:u.misc?u.misc.pdtid:"",vgd\_tpid:u.misc?u.misc.tpid:"",pid:u.meta?u.meta.pid:"",cme:u.meta?u.meta.cme:"",fp:u.meta?u.meta.fp:""}})},$0X:function(){$0H.$3p.$0I()&&$0H.$3p.log(w.CHECKPOINT\_TRACKER.$1Y),o=(new Date).getTime(),(u.misc.jtag||b.$2C||function(){if(s.$3s(window,"load",n),"complete"==document.readyState)return 1;1==u.misc.macIaLog?s.$3s(window,"load",i):s.$3s(window,"load",G)}())&&(1==u.misc.macIaLog?i:G)()},pipeline:H,fireLogPixel:function($,i){var e,n={requrl:decodeURIComponent(u.misc.purl)};for(e in n)i[e]=n[e];$=b.$2G.lHost+$+"?"+m.$4z(i),f.$2V($+"&r="+(new Date).getTime())},$2i:N,$2j:function(){return m.$4q(C.$1l("rtbLogParams"))&&b.$2E&&m.$4q(b.$2E.host)},$2k:function(){s.$4Q(window,"load",G);var $=C.$1l("rtbLogParams"),i=b.$2E.host+"/rtblog.php?",e=z();i=N(U("https://"+i+$+m.$4z({vgd\_ltime:e.ltime,vgd\_ltimesrc:e.ltimesrc,vgde\_timeObj:m.$59(e.timeObj),fp:decodeURIComponent(m.$5L(u.meta.fp)),cme:decodeURIComponent(m.$5L(u.meta.cme)),gdpr:m.$4r(u.misc.privacy.gdpr)&&String(u.misc.privacy.gdpr)||"0",mspa:m.$4r(u.misc.privacy.mspa)&&String(u.misc.privacy.mspa)||"0",wshp:m.$4r(u.misc.privacy.wshp)&&String(u.misc.privacy.wshp)||"0",vgd\_wshp:m.$4r(u.misc.privacy.wshp)&&String(u.misc.privacy.wshp)||"0",vgd\_uspa:m.$4r(u.misc.privacy.uspenf)&&String(u.misc.privacy.uspenf)||"0",vgde\_ydsp:q()}))),f.$2V(i),m.$51.stop()}}});$00("serpLocHash",["util"],function(t){"use strict";var u={};return{$3w:function(r,n){t.$4r(r)&&t.$4r(n)&&(u[r]=n)},$3x:function(){var r=t.$4z(u);return t.$4q(r)?"#"+r.substring(1):""}}});$00("commonKwdHelper",["util","metaparamutil","urlutil","commonconstants","lochashutil","abputil","domutil"],function(t,e,f,$,r,n,c){"use strict";return{$Bs:function(){return t.$4q(e.misc.kwdArbUrl)},$Bt:function(e){var r;(e=e.target||e.srcElement)&&e.href&&t.$4q(e.href)&&(r=e.href.replace(/&kct=.\*?(&|#|$)/,"$1"),e.href=f.$4a(r,"kct",t.$51.getTime($.$09.$0Z)))},$Bu:function(e){var r;(e=e.target||e.srcElement)&&e.href&&t.$4q(e.href)&&(r=e.href.replace(/&abpl=.\*?(&|#|$)/,"$1"),e.href=f.$4a(r,"abpl",n.getABPFlag("val",!0)))},$Bv:function(e){(e=e.target||e.srcElement)&&e.href&&t.$4q(e.href)&&(e.href=f.$4g(e.href,"ule","ure"))},$Bw:function(e){(e=e.target||e.srcElement)&&e.href&&t.$4q(e.href)&&(e.href=f.$4d(e.href,"kcrs"),e.href=f.$4a(e.href,"kcrs",c.$36().rensize))}}});$00("kwdclkurl",["util","domutil","metaparamutil","lochashutil","l3receiver","commonparamutil","abputil","urlutil","loggingservice","serpLocHash","commonKwdHelper"],function(l,e,i,r,a,d,m,p,u,s,g){"use strict";n="";var n,k={$Bx:function(){return n=""==n?((new Date).getTimezoneOffset()/60\*-1).toString()+"#"+window.screen.height+"#"+window.screen.width:n}};return{$By:function(e,n,t,c){var $=e||"";if(d.$1i())return e=e,o=c.adv,i.meta.adm||o||p.$4c(e)+"://"+l.$5H(e);a.$1l("isBrdgImpl")||g.$Bs()||($=[$,r.$1w(),"&"].join(""),$=($=($=($+="&fp="+encodeURIComponent(i.meta.fp))+"&cme="+encodeURIComponent(i.meta.cme))+m.getABPFlag())+r.$24());var o=a.$1l("fgbr"),e=(l.$4s(o)&&($=l.$5A($,"fgbr",1==o?"1":"0")),d.$1b()),e=($+=l.$4z(e),a.$1l("kClkUP")),e=(l.$4q(e)&&($+="&kclkp="+e),a.$1l("ckcvi")),e=(l.$4q(e)&&($+="&ckcvi="+e),a.$1l("bqs")),e=(l.$4q(e)&&($+="&bqs="+e),0<l.$5M(document,"ddsck"+t).length&&l.$4q(c.desc)&&($+="&kdsci="+encodeURIComponent(c.dId)),1!=i.misc.serpRct||l.$5I()||($=l.$5A($,"srprc","0")),$+=function(){var e="";try{e="&bd="+encodeURIComponent(k.$Bx())}catch(e){}return e}(),l.$4q(a.$1l("ypl"))&&($+="&ypl="+encodeURIComponent(a.$1l("ypl"))),$+=u.pipeline.$05(),$=l.$5B($,u.pipeline.$06()),i.misc&&1===i.misc.lpua&&($+="&lpua="+encodeURIComponent(window.navigator.userAgent)),a.$1l("clkIdQs"));return l.$4q(e)&&s.$3w("clkId",e),$+=s.$3x(),$0H.zola.$0I()&&($=$0H.zola.$46($)),p.$4g($,"ule","ure")}}});$00("kwdevthandler",["metaparamutil","lochashutil","eventlib","commonKwdHelper"],function($,n,i,e){"use strict";return{$5d:function($){var n,c,$=$.anchor;function t($){e.$Bt($),e.$Bw($),$0H.$3n.$0I()&&$0H.$3n.$5f($),e.$Bv($)}function H($){e.$Bt($),e.$Bu($),e.$Bw($),$0H.$3n.$0I()&&$0H.$3n.$5f($),e.$Bv($)}e.$Bs()||(c=$,$0H.$3C.$0I()&&$0H.$3C.$31(c),c=$,(n=$0H.$3S).$0I()&&i.$3s(c,"click",n.$38),c=$,(n=$0H.$3Y).$0I()&&i.$3s(c,"click",n.$3B),c=$,(n=$0H.$3g).$0I()&&i.$3s(c,"click",n.$40),c=$,$0H.$3D.$0I()&&$0H.$3D.$5g(c),!1===($0H.$3D.$0I()&&$0H.$3D.$5h($))&&(i.$3s($,"mouseover",t),i.$3s($,"click",H)))}}});$00("keywordProcessor",["util","kwdextractor","kwdclkurl","kwdevthandler","renderinghelper","eventlib","commonconstants"],function(o,e,$,i,n,c,a){"use strict";function d(r){var t;$0H.$3d.$0I()&&!1===$0H.$3d.$35()||($0H.$3p.$0I()&&$0H.$3p.log(a.CHECKPOINT\_TRACKER.$1V+(r?"-rp":"")),t=e.$5\_(),o.each(t,function(t){var e,n;t.isValid&&(t=t,(e=r)||(n=t.anchor).hasAttribute("href")&&(n.href=$.$By(n.href,n.innerText,t.position,t.misc)),n=[],$0H.$3\_.$0I()&&(n=$0H.$3\_.$5W(t)),e||n.push(t),o.each(n,function(t){"1"!==t.anchor.getAttribute("data-proc-event")&&(i.$5d(t),t.anchor.setAttribute("data-proc-event","1"))}))}),n.$2s(),"loading"===document.readyState&&c.$3s(window,"DOMContentLoaded",function(){d(!0)}))}return{init:function(){d(!1)}}});$00("loggingHandler",["loggingservice"],function(i){"use strict";return{init:i.init,$0X:i.$0X}});$00("copykeywordhandler",["util","kwdextractor"],function(k,o){"use strict";var $="";function s(t,n){var r=!1;return k.$5N(t,function(t){"1"!==t.getAttribute("data-proc-kwd")&&(t.innerHTML=n,t.setAttribute("data-proc-kwd","1")),r=!0}),r}function f(t,o){var n=["href","target","onmouseover","onmouseout","onclick","title"];k.$5N(t,function(e){"1"!==e.getAttribute("data-proc-kwd")&&k.each(n,function(t){var n,r;t=t,r=e,n=(n=o).getAttribute(t),k.$4q(n)&&r.setAttribute(t,n),e.setAttribute("data-proc-kwd","1")})})}function p(r,t){var e=[];return k.$5N(t,function(t){var n;e.push((n=r,t=t,(n=new o.$5a(n.anchor)).anchor=t,n))}),e}return{$5W:function(t){var n,r,e,o,c,i,u,a=document,d=[];return t&&1==t.type?(r=a,e=(n=t).misc||{},o=n.position,c=k.$5M(r,"dck"+o),i=k.$5M(r,"dak"+o),u=k.$5M(r,"ddsck"+o),r=k.$5M(r,"dok"+o),o=n.anchor,k.$4q(e.desc)&&s(u,e.desc)&&($+="&kdsci[]="+e.dId),k.$4q(e.ogkwd)&&s(r,e.ogkwd),s(c,o.innerHTML),f(i,o),d=i):t&&2==t.type&&(n=a,r=(u=t).position,e=k.$5M(n,"mck"+r),n=k.$5M(n,"mak"+r),r=u.anchor,s(e,r.innerHTML),f(n,r),d=n),p(t,d)},$5X:function(){return $}}});$00("setupPostMessage",["eventlib","commonparamutil","commonconstants","util"],function(n,s,$,t){"use strict";function e(t){var e,a;try{e=JSON.parse(t.data)}catch(t){e={}}e.token==s.$1Z()&&"trigger-l3-event"===e.key&&(t=e.value,a=$.$0$.$0b+t.type,1==e.delayed?n.$4V(a,t.params):n.$4R(a,t.params))}return{init:function(){t.$4m()&&(n.$3s(window,"message",e),n.$0J($.$0$.$0c,s.$1Z(),!0,{delay:1}))}}});$00("cookieDeprecationLabelManager",["eventlib","commonparamutil"],function(e,n){"use strict";var t,i;function a(){t=!0}function l(e){i=e.cdeplbl||""}return{init:function(){e.$4T("cdeplbl\_api\_present",n.$1Z(),a),e.$4T("cdeplbl\_ready",n.$1Z(),l)},$33:function(){return t?""===i?"empty\_label":i||"timeout":"api\_not\_available"}}});$00("intersectionapi",["util"],function($){return function(e,n,t,i,o){var r,u,c,s=$.$4r(n)?n:window,a=$.$4r(t)?t:.5,f=!1,l=null,b={rootMargin:"0px",threshold:a},h=$.$4s(i)?parseInt(i,10):1e3;function v(n,t,i){i||n.unobserve(e),$.$4p(t)&&t()}this.onIABViewableStart=function(n){r=n||function(){}},this.onIABViewableEnd=function(n){u=n||function(){}},this.startObserving=function(){$.$4r(e)&&null===l&&(l=new s.IntersectionObserver(function(n,t){var i;i=t,n.forEach(function(n){f=n.intersectionRatio>=a?(clearTimeout(c),c=setTimeout(function(){f&&v(i,r,o)},h),!0):(v(i,u,!0),!1)})},b)).observe(e)},this.$0N=function(){clearTimeout(c),l.unobserve(e)}}});$00("scrr-intersection-helper",["util","intersectionapi"],function($,u){"use strict";var a=1e3,f=0,d=.5,v=1,s=.3,w=242e3,l={};function t(r,i,o){var c;function n(){n=i,t=function(n){var e=l.cvc||{};return $.$4r(e[n])?e[n]:$.$4r(e.def)?e.def:void 0}(l.crid),e={$0L:t&&t.time||a},$.$4r(n)&&(t&&$.$4r(t.area)?e.$2o=t.area:function(n){var e=n&&n.clientWidth||0,n=n&&n.clientHeight||0;if(w<=e\*n)return v;return f}(n)===v?e.$2o=s:e.$2o=d);var n,e,t=e;(c=new u(i,r,t.$2o,t.$0L,l.$61)).onIABViewableStart(o),c.startObserving(),$.$4p(l.$62)&&c.onIABViewableEnd(l.$62)}return"function"==typeof window.IntersectionObserver&&n(),{$0N:function(){c&&c.$0N()}}}return{init:function(n,e){return new t((l=n).$2n||window,l.$60||document.activeElement||document.body,e)}}});$00("viewable-impression",["util","logutil","domutil","chkpTimeUtil","lochashutil","scsVarAdapter","scrr-intersection-helper","eventlib","l3receiver","commonparamutil"],function(t,n,r,s,v,a,e,$,c,d){"use strict";var p="",m=a.vimpd&&a.vimpd.vimpp||{},\_=a.$2F&&a.$2F.misc&&a.$2F.misc.bdata||"";function l(){var i,e,$;!t.$4q(p)&&t.$4q(a.$2G.lHost)&&(p=a.$2G.lHost+"/bqi.php?"),t.$4q(p)&&(e=p+t.$4z(m)+t.$4z(function(){var i={};t.$4q(\_)&&(i.vgde\_bdata=t.$59(\_)),i.vgd\_acid=v.$1v("acid"),i.hvsid=d.$1a(),i.cme=a.$2F.meta.cme||"",i.fp=a.$2F.meta.fp||"",i.timeObj=s.$30((new Date).getTime(),!1),$0H.$3a.$0I()&&(i.vgde\_ydsp=$0H.$3a.$45());(e=r.$36())&&(e.x\_pos||e.y\_pos)&&(i.vgd\_x\_pos=e.x\_pos,i.vgd\_y\_pos=e.y\_pos),e.rensize&&(i.vgd\_rensize=e.rensize),e.ren\_page\_h&&(i.vgd\_ren\_page\_h=e.ren\_page\_h),t.$4q(c.$1l("bqs"))&&(i.vgd\_bqs=c.$1l("bqs"));var e=a.$2F.misc.privacy||{};return t.$5C(e,i)}()),e=t.$5A(e,"vgd\_len",e.length),i=e,$=a.$2F.misc.trunLogUrl||"",t.$4q($)?(i=t.truncateUrl(i,$),i+="&vgd\_end=2"):i+="&vgd\_end=1",e=i,n.$2U([e]),0<($=c.$1l("ntvViewTrks")).length)&&n.$2U($)}return{init:function(){var i;e.init(((i={}).crid=a.$2F.meta.crid||"",i.cvc=a.vimpd&&a.vimpd.cvc||{},i),function(){1!==t.$5Q(a,["vimpd","disIVimp"],0)&&l(),$.$4V("SCRR::VIMP",{})})}}});$00("modulefactory",[],function(){"use strict";function e(e){var r=!0,a={};try{a=$01([e])[0]}catch(e){r=!1}return a.$0I=function(){return r},a}return{$3C:e("conversionpixelcontroller"),$3D:e("browserhinter"),$3E:e("preconnect"),$3F:e("linkprefetch"),$3G:e("kwdClickTargetModifier"),hover:e("hover"),$3H:e("mraid-util"),$3I:e("mraidDelayedLogging"),$3J:e("mraidlogginghelper"),$3K:e("macrokeywords"),$3L:e("tcfdatamanager"),$3M:e("l3-reporting-observer-adapter"),$3N:e("editorial\_blocking"),$3O:e("keywordProcessor"),$3P:e("directAdsHandler"),$3Q:e("loggingHandler"),$3R:e("customsitesearch"),adPrefDeviceUtil:e("adprefdeviceutil"),adPrefMobileUtil:e("adprefmobileutil"),adPrefResponsiveUtil:e("adprefresponsiveutil"),$3S:e("kwdclickdebugpixel"),$3T:e("ntvHandler"),$3U:e("ntvKwdHandler"),$3V:e("ntvAdHandler"),$3W:e("ntvExtProvHandler"),$3X:e("imageProcessor"),$3Y:e("landing-page-click-tracker"),$3Z:e("jtaghelper"),$3\_:e("copykeywordhandler"),$3a:e("ybndsphelper"),$3b:e("adjustiframeheighttobody"),$3c:e("refreshhelper"),$3d:e("hideybncahelper"),$3e:e("performanceUtil"),$3f:e("browserCacheUtil"),$3g:e("supply-side-macros"),$3h:e("setupPostMessage"),$3i:e("cookieDeprecationLabelManager"),$3j:e("inslEventHandler"),zola:e("zola"),$3k:e("viewable-impression"),$3l:e("spamAnalystPixel"),$3m:e("asSignalTracker"),$3n:e("kwdOverflowLogger"),$3o:e("landing-page-dwell-time-tracker"),$3p:e("scrr-checkpoint-tracker")}});$00("core",["util","commonconstants","scsVarAdapter","metaparamutil","lochashutil","eventlib"],function(i,e,H,t,o,l){"use strict";return i.$51.start(),i.$58(e.$09.$0Y),i.$51.tick(e.$09.$0Z),{init:function(){var $;i.$5R("reels"),$0H.$3p.$0I()&&$0H.$3p.log(e.CHECKPOINT\_TRACKER.CORE),i.$58("matm"),window.locHash=H.locHash,window.$2F=t.init(),o.init(),$0H.adPrefDeviceUtil.$0I()&&(window.adPrefDeviceUtil=$0H.adPrefDeviceUtil),$0H.adPrefMobileUtil.$0I()&&(window.adPrefMobileUtil=$0H.adPrefMobileUtil),$0H.adPrefResponsiveUtil.$0I()&&(window.adPrefResponsiveUtil=$0H.adPrefResponsiveUtil),$=[$0H.$3h,$0H.$3i,$0H.$3L,$0H.$3Q,$0H.$3C,$0H.hover,$0H.$3g,$0H.$3O,$0H.$3X,$0H.$3P,$0H.$3T,$0H.$3R,$0H.$3H,$0H.$3e,$0H.$3j,$0H.$3k,$0H.$3M,$0H.$3l,$0H.$3m,$0H.$3o],i.each($,function($){$.$0I()&&$.init()}),$=H.mNL3&&H.mNL3.vi?H.mNL3.vi:"",i.$4q($)&&H.$2O&&l.$0J("l2StaticModulesConfig",$,!1,{l2mc:H.$2O||{}}),$0H.$3T.$0I()||$0H.$3j.$0I()||$0H.$3Q.$0I()&&$0H.$3Q.$0X()}}});var $0H=$01(["modulefactory"])[0],mUtil=$01(["core","util","abputil","renderinghelper","rtbsdatautil","eventlib","logutil","scsVarAdapter","loggingservice"],function(r,n,e,t,l,a,i,o,s){try{r.init()}catch(e){var r=window.scVars.nerrUrl,c=window.location.href,g=c.replace(window.location.hash,""),c=((e.stack||"").replaceAll(c,"l2Url").replaceAll(g,"l2Url")||"").replaceAll("https://"+window.location.host,"l2Url")||"",c={logLevel:3,layer:"scrr",errorVal:{name:e.name,message:e.message,stack:c,svr:"38824",cdv:"1914",cage:o.cage,scsver:o.scsver}};8700<(r=r+"&d="+encodeURIComponent(JSON.stringify([c]))+"&l2Url="+encodeURIComponent(g)).length?r=n.truncateUrl(r,8700)+"&vgd\_end=5":r+="&vgd\_end=1",i.$2V(r)}return{showFapiAds:null,getLayer1WindowObject:n.getLayer1WindowObject,getABPFlag:e.getABPFlag,changeAdFramesDimensions:t.changeAdFramesDimensions,getRtbsDisableReason:l.getRtbsDisableReason,fireLogPixel:s.fireLogPixel,$0J:a.$0J,truncateUrl:n.truncateUrl,renderAdUnit:s.$0X,closeExInttAd:function(){if($0H.$3j.$0I())return $0H.$3j.$0W()},closeInttAd:function(){if($0H.$3j.$0I())return $0H.$3j.$0V()}}});</script><script type="text/javascript"> function appendCustomHeader() { var cH = document.createElement('div'); cH.innerHTML = 'Advertisement'; cH.className = 'mnetAdb'; var cHsT = cH.style; cHsT.top = '5px'; cHsT.right = '5px'; cHsT.position = 'absolute'; cHsT.fontSize = '10px'; cHsT.background = "#FFF"; cHsT.color = "#F00"; cHsT.padding = "1px"; cHsT.fontWeight = "bold"; document.body.appendChild(cH); } </script><script type="text/javascript">if(typeof changeIframeDimensions == "undefined" && !!mUtil){mUtil.changeAdFramesDimensions({width:'100%', height:'689'});}</script><script defer="" src="https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" data-cf-beacon="{&#34;version&#34;:&#34;2024.11.0&#34;,&#34;token&#34;:&#34;b581429c7412469eac644440f0848da9&#34;,&#34;r&#34;:1,&#34;server\_timing&#34;:{&#34;name&#34;:{&#34;cfCacheStatus&#34;:true,&#34;cfEdge&#34;:true,&#34;cfExtPri&#34;:true,&#34;cfL4&#34;:true,&#34;cfOrigin&#34;:true,&#34;cfSpeedBrain&#34;:true},&#34;location\_startswith&#34;:null}}" crossorigin="anonymous"></script>
viproofingbrisbane.com.au may be for sale, click to inquire

1.5 · 客户 Logo + Brand 设计资产(logo-skill 自动产出 12 个文件 + 6 个设计文档)

未采集

Logo SVG 变体(7 个)

Brand 颜色 + 字体(brand-spec.json)

brand_primary#0E1118
brand_secondary#5A5C61
brand_accent#B68B3F
surface#FFFFFF
surface_muted#F4F4F5
text#0E1118
text_muted#5A5C61
border#E4E4E7

设计文档 · 全部 logo-skill 输出(点击展开)

Visual Style Contract · visual-style-contract.md · 5454 chars
# VIP Roofing Brisbane Website Visual Style Contract

## Boundary

This contract defines brand direction and visual guardrails. It does not design the final UI, page structure, component layouts, breakpoints, or frontend implementation.

## Brand Reading

Read the logo first: weight, typography, geometry, color, and personality should drive the website's visual system.

## Overall Style Direction

Style: clean local business

The website should feel premium-trade, urban, commercial-credible, established, restrained-confident.

Avoid: No gradient logos. No drop shadow on mark. No rounded 'P' bowl (must stay squared). No brass background washes. No 'welcome to' / 'trusted partner' / 'X years of excellence' template copy. No luxury cliché — VIP here means commercial-premium, not pageantry.

## Color Boundaries

```css
:root {
  --brand-primary: #0E1118;
  --brand-secondary: #5A5C61;
  --brand-accent: #B68B3F;
  --surface: #FFFFFF;
  --surface-muted: #F4F4F5;
  --surface-dark: #111111;
  --text: #0E1118;
  --text-muted: #5A5C61;
  --border: #E4E4E7;
}
```

Color rules:

- Use brand colors by role, not decoration.
- Maintain strong contrast for logo, text, nav, forms, and CTAs.
- Do not overuse the accent color as a full-page wash unless explicitly specified.

## Logo Usage Boundaries

- Light background logo: logo-light.svg
- Dark background logo: logo-dark.svg
- Mark/compact logo: logo-mark.svg
- Header: Light header (#FFFFFF) with logo-light.svg + dark text nav. Phone number top-right in brass. Sticky on scroll, 8% drop shadow.
- Footer: Dark footer (#0E1118) with logo-dark.svg. Secondary text in #B5B5B7. ABN + license + Eagle St CBD address below logo.
- Minimum size: Full lockup: 140px wide minimum on screen. Mark: 28px square minimum. Favicon: 16px (V/I/P remain readable; brass ridge becomes a single accent pixel row).
- Local contact: For local businesses, preserve room for phone number and quote/contact CTA; do not oversize the logo in the header.
- Export safety: check SVG viewBox padding so text, strokes, italic overshoots, and outlined paths are not clipped.

## Typography

- Heading font: Inter Tight 700/800 — geometric extended sans, matches the heavy mark.
- Body font: Inter 400/500 — neutral, paired body.
- Fallback stack: 'Inter Tight', 'Industry Inc', 'Helvetica Neue', Arial, sans-serif
- Logo typography notes: Bold geometric extended sans (Inter Tight Bold 800 / approximating Industry Inc). The 'P' bowl is intentionally squared to suggest box-gutter / parapet geometry — that detail is part of the brand and must not be replaced with a rounded bowl. The 'I' has slab serif caps (parapet feel). Wordmark uses tracked sans for tagline (BRISBANE).

## Layout Density

Density: medium/service-focused

Keep pages scannable, practical, and aligned with the brand's level of polish.

## Shape Language

Use shapes, radius, borders, and line weights that match the logo geometry.

## Header System

Protect logo visibility and avoid typography/color choices that compete with it. Do not prescribe exact header layout here.

Local business contact rule: Desktop header should expose phone or primary contact action. Mobile header should prioritize call, quote, or menu based on conversion need.

## Footer System

Footer should preserve the logo as the primary brand object, with readable links and restrained CTA/contact treatment.

## Buttons And CTA

Primary CTA: brass #B68B3F background, near-black #0E1118 text, 2px corner radius max. Secondary: outlined steel-gray border, dark text. Hover: 10% darker brass.

## Cards And Forms

Squared corners (2px). Flat — no drop shadow. 1px #E4E4E7 border. Inner padding 32px.

## Imagery Direction

CBD commercial roofing photography preferred (Brisbane skyline + commercial flat / metal roofs). Drone shots of completed work. Avoid stock 'handshake' and 'happy crew' shots.

## Icon Style

Geometric line icons (1.5px stroke), squared terminals, no rounded ends. Industrial: ridge cap, parapet, gutter, lapping seam, ladder.

## Section Backgrounds

Alternate white #FFFFFF and muted #F4F4F5. One hero section per page on #0E1118 with overlay imagery.

## Motion And Interaction

Use subtle, purposeful interactions. Avoid animations that fight the brand tone or delay conversion actions.

## Responsive Behavior

Define when full logo switches to mark-only, and protect logo visibility in mobile header/footer.

## Do / Don't

Do:

- Keep the logo visible in header, hero, footer, and mobile.
- Use the brand token system consistently.
- Match typography, shape, imagery, and icons to the logo personality.

Do not:

- Recolor the logo outside documented variants.
- Place the logo on low-contrast or busy backgrounds.
- Use generic website templates that clash with the logo.
- Add effects, shadows, or gradients to the logo unless explicitly approved.

## Website Agent Prompt

```text
Use the supplied VIP Roofing Brisbane mark exactly as provided. Do not redraw the V, I, or P glyphs; do not move or recolor the brass apex ridge. The brand reads as premium-trade for Brisbane CBD commercial roofing — restrained-confident, urban, geometric, structural. Use #0E1118 as primary, #B68B3F as the accent (apply sparingly — primary CTAs and apex line only), and #5A5C61 as secondary/text-muted. Strong typographic hierarchy with Inter Tight Bold for headings. Maintain high contrast; the brass accent is a precious-detail color, never a background wash.
```
Brand Assets 说明 · brand-assets.md · 5187 chars
# Brand Assets

## Brand Summary

- Business name: VIP Roofing Brisbane
- Short name/key word: VIP
- Industry/niche: commercial and residential metal roofing
- Local area: Brisbane CBD, Queensland
- Brand personality: premium-trade, urban, commercial-credible, established, restrained-confident
- Logo strategy: geometric letterform mark (VIP) + brass apex ridge accent + stacked wordmark
- Output mode: website-ready brand kit

## Logo Assets

- `logo-light.svg`: Full stacked lockup for light surfaces (mark + VIP ROOFING + BRISBANE).
- `logo-dark.svg`: Full stacked lockup for dark surfaces (VIP → white, brass stays, BRISBANE → light gray).
- `logo-mark.svg`: VIP mark only with brass apex ridge — header, badge, watermark.
- `logo-wordmark.svg`: VIP ROOFING + BRISBANE wordmark only · no mark.
- `logo-mono-dark.svg`: Single-color black, brass element removed/unified — print/single-color use.
- `logo-mono-light.svg`: Single-color white version.
- `favicon.svg`: Mark padded to 1:1 · brass apex remains.
- `social-avatar.svg`: Mark on solid #0E1118 1024×1024 square (white VIP, brass ridge) — works for circle and square crops.

Clearspace: Reserve at least the height of the 'I' stem (about 320 SVG units / 1× cap height) around the full lockup.
Minimum size: Full lockup: 140px wide minimum on screen. Mark: 28px square minimum. Favicon: 16px (V/I/P remain readable; brass ridge becomes a single accent pixel row).
Background restrictions: Light variant on surfaces #FFFFFF–#E4E4E7. Dark variant on surfaces darker than #2A2A2E. Never place light logo on warm beige photography — use scrim or dark variant. Brass accent must reach 3:1 contrast against its background.
Small-size assets: Use logo-mark.svg or favicon.svg for headers <56px tall. Never squeeze the full stacked lockup into a square avatar.
Visual style contract: See visual-style-contract.md in this folder.
Agent handoff: See agent-handoff.md.
QA checklist: Run logo-qa-checklist.md before delivery.



## Color System

```css
:root {
  --brand-primary: #0E1118;
  --brand-secondary: #5A5C61;
  --brand-accent: #B68B3F;
  --surface: #FFFFFF;
  --surface-muted: #F4F4F5;
  --text: #0E1118;
  --text-muted: #5A5C61;
  --border: #E4E4E7;
}
```

## Typography

- Logo typography: Bold geometric extended sans (Inter Tight Bold 800 / approximating Industry Inc). The 'P' bowl is intentionally squared to suggest box-gutter / parapet geometry — that detail is part of the brand and must not be replaced with a rounded bowl. The 'I' has slab serif caps (parapet feel). Wordmark uses tracked sans for tagline (BRISBANE).
- Heading font: Inter Tight 700/800 — geometric extended sans, matches the heavy mark.
- Body font: Inter 400/500 — neutral, paired body.
- Fallback stack: 'Inter Tight', 'Industry Inc', 'Helvetica Neue', Arial, sans-serif

## UI Direction

- Header: Light header (#FFFFFF) with logo-light.svg + dark text nav. Phone number top-right in brass. Sticky on scroll, 8% drop shadow.
- Footer: Dark footer (#0E1118) with logo-dark.svg. Secondary text in #B5B5B7. ABN + license + Eagle St CBD address below logo.
- Favicon/social: favicon.svg for browser tabs · social-avatar.svg (dark #0E1118 background) for Google Business Profile / Facebook / Instagram.
- Buttons: Primary CTA: brass #B68B3F background, near-black #0E1118 text, 2px corner radius max. Secondary: outlined steel-gray border, dark text. Hover: 10% darker brass.
- Links: Inline links use #B68B3F with subtle underline. Hover deepens to #8E6B2C.
- Section backgrounds: Alternate white #FFFFFF and muted #F4F4F5. One hero section per page on #0E1118 with overlay imagery.
- Cards/forms: Squared corners (2px). Flat — no drop shadow. 1px #E4E4E7 border. Inner padding 32px.
- Icons: Geometric line icons (1.5px stroke), squared terminals, no rounded ends. Industrial: ridge cap, parapet, gutter, lapping seam, ladder.
- Imagery: CBD commercial roofing photography preferred (Brisbane skyline + commercial flat / metal roofs). Drone shots of completed work. Avoid stock 'handshake' and 'happy crew' shots.
- Avoid: No gradient logos. No drop shadow on mark. No rounded 'P' bowl (must stay squared). No brass background washes. No 'welcome to' / 'trusted partner' / 'X years of excellence' template copy. No luxury cliché — VIP here means commercial-premium, not pageantry.
- Website visual style: Urban premium-trade. Dense information layout with strong typographic hierarchy. Near-black + steel-gray + warm brass. Photo-heavy hero blocks of commercial work. Avoid luxury, avoid SaaS gradient aesthetics, avoid generic 'modern minimal'.

## AI Website Agent Prompt

```text
Use the supplied VIP Roofing Brisbane mark exactly as provided. Do not redraw the V, I, or P glyphs; do not move or recolor the brass apex ridge. The brand reads as premium-trade for Brisbane CBD commercial roofing — restrained-confident, urban, geometric, structural. Use #0E1118 as primary, #B68B3F as the accent (apply sparingly — primary CTAs and apex line only), and #5A5C61 as secondary/text-muted. Strong typographic hierarchy with Inter Tight Bold for headings. Maintain high contrast; the brass accent is a precious-detail color, never a background wash.
```
Agent Handoff(给 build agent 的规则) · agent-handoff.md · 2273 chars
# Agent Handoff

## Brand

- Business: VIP Roofing Brisbane
- Industry: commercial and residential metal roofing
- Location: Brisbane CBD, Queensland
- Output mode: website-ready brand kit

## Read Order

1. `brand-assets.md`
2. `visual-style-contract.md`
3. `logo-qa-checklist.md`
4. `source-logo-audit.md` if this is an existing-logo conversion
5. SVG assets

## Logo Usage

- Light background: logo-light.svg
- Dark background: logo-dark.svg
- Compact mark: logo-mark.svg
- Favicon/social: favicon.svg for browser tabs · social-avatar.svg (dark #0E1118 background) for Google Business Profile / Facebook / Instagram.

## Non-Negotiables

- Keep logo visible and uncropped.
- Use documented dark/light variants.
- Do not recolor or distort the logo.
- Preserve source logo fidelity if this is an existing-logo conversion.
- Preserve local phone/quote/contact priority for local businesses.
- Follow `visual-style-contract.md` as direction and guardrails, not fixed UI.

## Website Agent Freedom

The website agent owns:

- page layout
- component design
- spacing
- section order
- responsive breakpoints
- frontend implementation

## Constraints

- Color: Use brand tokens by role and preserve contrast.
- Typography: Match the logo personality; avoid clashing fonts.
- Imagery: CBD commercial roofing photography preferred (Brisbane skyline + commercial flat / metal roofs). Drone shots of completed work. Avoid stock 'handshake' and 'happy crew' shots.
- Avoid: No gradient logos. No drop shadow on mark. No rounded 'P' bowl (must stay squared). No brass background washes. No 'welcome to' / 'trusted partner' / 'X years of excellence' template copy. No luxury cliché — VIP here means commercial-premium, not pageantry.

## Known Limitations

['Wordmark uses live <text> elements rendered via Inter Tight font family (web font). For print/PDF use, outline to paths first to lock fidelity.', 'Brass accent #B68B3F was chosen for contrast against #FFFFFF (3.4:1) — passes graphical/UI contrast threshold but not normal-text body contrast. Do not use brass for body text.', 'Mark, brass ridge, and apex diamond are originally drawn vectors — no auto-trace artifacts.', "The 'P' squared bowl is a deliberate brand mark, not an error. Do not replace with a rounded bowl."]
Logo QA Checklist · logo-qa-checklist.md · 917 chars
# Logo QA Checklist

Business: VIP Roofing Brisbane

- [ ] Expected assets exist or omissions are documented.
- [ ] SVG files validate.
- [ ] SVG viewBox has export-safety padding.
- [ ] Logo is transparent unless a background was requested.
- [ ] Dark and light variants preserve contrast.
- [ ] No hidden rectangle is used to fake contrast.
- [ ] Existing-logo changes are documented as cleanup, adaptation, or optional redesign.
- [ ] Exact-font uncertainty and fallback strategy are documented.
- [ ] Header-size logo remains readable.
- [ ] Local phone/quote action has room when applicable.
- [ ] Footer logo remains visible and not overpowered.
- [ ] Favicon/social asset is not a squeezed full horizontal logo.
- [ ] Visual style contract is direction and guardrails, not UI spec.
- [ ] Agent handoff tells website agent what it may decide.
- [ ] Final response mentions meaningful limitations.

## Notes

- 
CSS Design Tokens · brand-tokens.css · 210 chars
:root {
  --brand-primary: #0E1118;
  --brand-secondary: #5A5C61;
  --brand-accent: #B68B3F;
  --surface: #FFFFFF;
  --surface-muted: #F4F4F5;
  --text: #0E1118;
  --text-muted: #5A5C61;
  --border: #E4E4E7;
}
Brand Spec JSON(结构化) · brand-spec.json · 5950 chars
{
  "business_name": "VIP Roofing Brisbane",
  "key_word": "VIP",
  "industry": "commercial and residential metal roofing",
  "location": "Brisbane CBD, Queensland",
  "personality": "premium-trade, urban, commercial-credible, established, restrained-confident",
  "logo_strategy": "geometric letterform mark (VIP) + brass apex ridge accent + stacked wordmark",
  "output_mode": "website-ready brand kit",
  "agent_prompt": "Use the supplied VIP Roofing Brisbane mark exactly as provided. Do not redraw the V, I, or P glyphs; do not move or recolor the brass apex ridge. The brand reads as premium-trade for Brisbane CBD commercial roofing — restrained-confident, urban, geometric, structural. Use #0E1118 as primary, #B68B3F as the accent (apply sparingly — primary CTAs and apex line only), and #5A5C61 as secondary/text-muted. Strong typographic hierarchy with Inter Tight Bold for headings. Maintain high contrast; the brass accent is a precious-detail color, never a background wash.",
  "colors": {
    "brand_primary": "#0E1118",
    "brand_secondary": "#5A5C61",
    "brand_accent": "#B68B3F",
    "surface": "#FFFFFF",
    "surface_muted": "#F4F4F5",
    "text": "#0E1118",
    "text_muted": "#5A5C61",
    "border": "#E4E4E7"
  },
  "logo_assets": {
    "logo-light.svg": "Full stacked lockup for light surfaces (mark + VIP ROOFING + BRISBANE).",
    "logo-dark.svg": "Full stacked lockup for dark surfaces (VIP → white, brass stays, BRISBANE → light gray).",
    "logo-mark.svg": "VIP mark only with brass apex ridge — header, badge, watermark.",
    "logo-wordmark.svg": "VIP ROOFING + BRISBANE wordmark only · no mark.",
    "logo-mono-dark.svg": "Single-color black, brass element removed/unified — print/single-color use.",
    "logo-mono-light.svg": "Single-color white version.",
    "favicon.svg": "Mark padded to 1:1 · brass apex remains.",
    "social-avatar.svg": "Mark on solid #0E1118 1024×1024 square (white VIP, brass ridge) — works for circle and square crops."
  },
  "clearspace": "Reserve at least the height of the 'I' stem (about 320 SVG units / 1× cap height) around the full lockup.",
  "minimum_size": "Full lockup: 140px wide minimum on screen. Mark: 28px square minimum. Favicon: 16px (V/I/P remain readable; brass ridge becomes a single accent pixel row).",
  "background_restrictions": "Light variant on surfaces #FFFFFF–#E4E4E7. Dark variant on surfaces darker than #2A2A2E. Never place light logo on warm beige photography — use scrim or dark variant. Brass accent must reach 3:1 contrast against its background.",
  "small_size_assets": "Use logo-mark.svg or favicon.svg for headers <56px tall. Never squeeze the full stacked lockup into a square avatar.",
  "visual_style_contract": "See visual-style-contract.md in this folder.",
  "agent_handoff": "See agent-handoff.md.",
  "qa_checklist": "Run logo-qa-checklist.md before delivery.",
  "logo_typography": "Bold geometric extended sans (Inter Tight Bold 800 / approximating Industry Inc). The 'P' bowl is intentionally squared to suggest box-gutter / parapet geometry — that detail is part of the brand and must not be replaced with a rounded bowl. The 'I' has slab serif caps (parapet feel). Wordmark uses tracked sans for tagline (BRISBANE).",
  "heading_font": "Inter Tight 700/800 — geometric extended sans, matches the heavy mark.",
  "body_font": "Inter 400/500 — neutral, paired body.",
  "font_stack": "'Inter Tight', 'Industry Inc', 'Helvetica Neue', Arial, sans-serif",
  "header": "Light header (#FFFFFF) with logo-light.svg + dark text nav. Phone number top-right in brass. Sticky on scroll, 8% drop shadow.",
  "footer": "Dark footer (#0E1118) with logo-dark.svg. Secondary text in #B5B5B7. ABN + license + Eagle St CBD address below logo.",
  "favicon_social": "favicon.svg for browser tabs · social-avatar.svg (dark #0E1118 background) for Google Business Profile / Facebook / Instagram.",
  "buttons": "Primary CTA: brass #B68B3F background, near-black #0E1118 text, 2px corner radius max. Secondary: outlined steel-gray border, dark text. Hover: 10% darker brass.",
  "links": "Inline links use #B68B3F with subtle underline. Hover deepens to #8E6B2C.",
  "sections": "Alternate white #FFFFFF and muted #F4F4F5. One hero section per page on #0E1118 with overlay imagery.",
  "cards": "Squared corners (2px). Flat — no drop shadow. 1px #E4E4E7 border. Inner padding 32px.",
  "icons": "Geometric line icons (1.5px stroke), squared terminals, no rounded ends. Industrial: ridge cap, parapet, gutter, lapping seam, ladder.",
  "imagery": "CBD commercial roofing photography preferred (Brisbane skyline + commercial flat / metal roofs). Drone shots of completed work. Avoid stock 'handshake' and 'happy crew' shots.",
  "avoid": "No gradient logos. No drop shadow on mark. No rounded 'P' bowl (must stay squared). No brass background washes. No 'welcome to' / 'trusted partner' / 'X years of excellence' template copy. No luxury cliché — VIP here means commercial-premium, not pageantry.",
  "website_visual_style": "Urban premium-trade. Dense information layout with strong typographic hierarchy. Near-black + steel-gray + warm brass. Photo-heavy hero blocks of commercial work. Avoid luxury, avoid SaaS gradient aesthetics, avoid generic 'modern minimal'.",
  "design_loop_notes": "See logo-review.md for 3-direction exploration, rejected directions, and revision evidence.",
  "limitations": [
    "Wordmark uses live <text> elements rendered via Inter Tight font family (web font). For print/PDF use, outline to paths first to lock fidelity.",
    "Brass accent #B68B3F was chosen for contrast against #FFFFFF (3.4:1) — passes graphical/UI contrast threshold but not normal-text body contrast. Do not use brass for body text.",
    "Mark, brass ridge, and apex diamond are originally drawn vectors — no auto-trace artifacts.",
    "The 'P' squared bowl is a deliberate brand mark, not an error. Do not replace with a rounded bowl."
  ]
}

1.5b · 已网站抓的所有图片(image-harvester + vision LLM 分类)

未跑 image-harvester · 跑 pl:classify-images 后才有

1.6 · WHOIS RDAP (.au registry)

注册商DROP.com.au Pty Ltd
最近变更2026-03-08
statusserver renew prohibited

1.7 · Wayback Machine

未采集

1.8 · ABR · ABN Lookup

ABN80 109 162 183 · Cancelled
注册名(真法人)Siyabonga Pty Ltd
实体类型Australian Private Company
ACN109162183
状态生效2009-04-01
GST 注册
Trading names

1.9 · Tinyfish 5 路并行外部搜索 · 每个 link 已 fetch + LLM 摘要

✓ 1 个 AU 外部 mention · 0 个已 LLM summarize

www.yelp.com · #1
VIP ROOFING BRISBANE - Updated May 2026 - 23 Photos ↗
https://www.yelp.com/biz/vip-roofing-brisbane-brisbane

✓ Tinyfish fetch + Ollama qwen3.5:9b summarize · 全免费 · ~15s/link · run via pl:summarize-external-mentions --slug vip-roofing-brisbane

1.10 · 现网视觉 Playwright 截图 + 慢速 4G 录屏

✓ desktop + mobile + video

desktop mobile

1.11 · Vision LLM 视觉评分 (Ollama)

未采集

1.5数据覆盖 + 核心元素提取

所有数据源的健康检查 + LLM 把 raw 数据精炼成"核心事实"(每条 fact 标来源)· 这是 wireframe 阶段的真正输入

📊 数据覆盖 (5 个源)

✓ AI-READY
gbpthin Missing: state, email, hours, editorial_summary, about
owned_websiteok No images extracted · run pl:extract-crawl-images
tinyfish_mentionsfailed 10 unresolved link(s)
domain_historymissing No domain age data
abnmissing No ABN on file

📋 Todolist · 待解决项 (15)

🔗 失败的 Tinyfish 链接 (手工解决)

DomainURL · Reason
www.yelp.comhttps://www.yelp.com/biz/vip-roofing-brisbane-brisbane
no summary
www.facebook.comhttps://www.facebook.com/VIPRoofingBrisbane/
no summary
www.houzz.com.auhttps://www.houzz.com.au/professionals/roofing-and-gutters/vip-roofing-brisbane-pfvwau-pf~1704278009
no summary
au.linkedin.comhttps://au.linkedin.com/company/vip-roofing-brisbane
no summary
viproofingbrisbane.weebly.comhttp://viproofingbrisbane.weebly.com/
no summary
www.mapquest.comhttps://www.mapquest.com/au/queensland/vip-roofing-brisbane-794217557
no summary
www.instagram.comhttps://www.instagram.com/viproofingbrisbane/
no summary
www.poyst.comhttps://www.poyst.com/business/vip-roofing-brisbane
no summary
www.whereis.comhttps://www.whereis.com/brisbane-city-qld/wip/vip-roofing-brisbane-580887080
no summary
rocketreach.cohttps://rocketreach.co/vip-roofing-brisbane-competitors_b7550f9cc53f4590
no summary

📖 Customer Brief · 完整的业务理解文档 (支撑整个网站设计)

codex_cli · 240s · prompt 141KB · ~$0.5 · raw: customer-brief.md · core-extract.json

VIP Roofing Brisbane · Customer Brief

完整的客户业务理解文档 · 支撑整个网站的设计与文案 · 每个章节都基于已验证的原始数据(GBP / 已有网站 / Google 评论 / 外部 mentions / ABN)
Generated: 2026-05-18T13:02:15.904Z · LLM: codex_cli · 240s · prompt 141KB · ~$0.5

1 · Executive Summary · 一段话定位

VIP Roofing Brisbane is listed on Google as a Brisbane roofing contractor with a 5-star rating from 26 reviews and a business address at 39/71 Eagle St, Brisbane City QLD 4000. The verified public phone number is 07 3062 7779. The strongest available market signal is not the current website, but the Google Business Profile: the business appears in local search for roofer Brisbane, has a perfect visible rating, and has enough reviews to support a trust-led redesign. The current website, however, is not a real business website. The crawl shows a parked or for-sale domain reading viproofingbrisbane.com.au, with related-search links such as Commercial Metal Roofing Near Me, Metal Roof Installation Price and even off-topic terms like Walk-In Showers for Bathrooms. The master audit states that visitors from Google Maps or search are immediately sent to a competitor-referral style page with no way to contact the business. For the redesign team, the brief is therefore recovery plus repositioning: build a credible Brisbane roofing website that makes the phone number, Google rating, Brisbane City base and roofing contractor category immediately clear. Because the corpus lacks ABN, licence, owner story, real reviews and project details, the first version should be transparent rather than overclaiming. Lead with verified facts, add strong placeholders for licence and project proof, and build the content architecture around confirmed roofing services once the business validates the scope.

2 · Company Background · 公司背景与历史

The available corpus gives VIP Roofing Brisbane a clear local identity but almost no usable company story. The business name appears consistently across Google Business Profile, master audit and external mention search results as VIP Roofing Brisbane. Google lists the business at 39/71 Eagle St, Brisbane City QLD 4000, Australia, with a QLD landline formatted as 07 3062 7779. The business category is roofingcontractor, and the profile reports a 5-star rating from 26 reviews. The master audit records that this lead was found through the Google Places API for roofer brisbane, ranking 14th in that result set, first discovered on 2026-05-14. That means the company already has some local discovery footprint, even though the owned domain is failing. Domain history is thin. WHOIS/RDAP confirms the domain viproofingbrisbane.com.au, privacy redaction, registrar DROP.com.au Pty Ltd, lastchanged_at 2026-03-08 and status server renew prohibited. WHOIS did not expose a registration date, expiry date or domain age, and Wayback data is null. The current site crawl does not show an About page, founder bio, ABN, service history, licence, insurance wording or years-in-business claim. Instead, the live page is a parked domain with advertising links and the line that viproofingbrisbane.com.au may be for sale. External mentions suggest the brand has wider footprint candidates: Yelp, Facebook, Houzz, LinkedIn, Weebly, MapQuest, Instagram, Poyst, Whereis and RocketReach results all reference VIP Roofing Brisbane, but tinyfish did not return raw page content for those mentions. For a new website, the background section should therefore be written as a verified local-business introduction, not an invented heritage story. It can say the business is a Brisbane roofing contractor with a Google profile, Brisbane City address and 5-star Google rating from 26 reviews. It should not claim a founder, founding year, number of years, family ownership, licence, awards or project history until supplied by the client.

3 · Team & Culture · 团队与工作风格

There are no named team members, owner quotes or verbatim customer reviews in the provided corpus, so the design team should avoid inventing personalities, crew structure or workmanship claims. The strongest culture signal available is indirect: VIP Roofing Brisbane has a Google Business Profile with 26 reviews and a 5-star rating, which indicates that past customers have had positive experiences, but the actual review language was not included. The current website contributes nothing useful about team culture because it is a parked page, not an operational business site. The crawl shows no staff photos, no team page, no owner story, no project gallery and no process explanation. This absence should shape the redesign. The site should be built with modules that can receive real human proof as soon as it is collected: a founder card, team photo strip, job-site process section, review carousel, project gallery and licence/insurance trust bar. Until then, copy should stay grounded and factual. A suitable culture direction is professional, direct and local-service oriented: answer the phone, inspect the roof, explain the options, complete the work carefully and leave the site tidy. Those behaviours are ai-inferred expectations for a roofing contractor, not verified claims from the corpus. The current business problem is that warm visitors from Google are likely reaching a page that looks unrelated, commercialised and possibly abandoned. The redesign needs to reverse that impression in the first screen by showing a real business name, phone number, Brisbane location, Google rating and roofing category. Once the business provides real reviews, the team-and-culture content should be rewritten around customer phrases such as punctuality, communication, workmanship, cleanup and value if those themes appear in the reviews. For launch readiness, collecting at least one owner quote and one team photo is higher impact than writing a generic About section.

4 · Service Scope · 业务范围(每项详细)

The verified service scope is narrow because the live website contains no genuine service content. The Google Business Profile confirms the category roofing_contractor, which should be the parent service for the website. The master audit also identifies roofing, roof and gutter as detected service keywords. The redesign should create a clear Services hub but should mark individual service pages as pending client confirmation before publication. Roofing contractor should be framed as the main offer: customers in Brisbane and Brisbane City need a local trade business that can assess roofing issues, explain the repair or replacement path and provide a clear quote. The process section should include enquiry, roof inspection, written scope, scheduled works and final handover, but the exact warranty and licensing language must be verified. Roof repairs are a likely priority page because local roofing search intent often begins with water ingress, storm damage, loose sheets, broken tiles or ageing flashings. This is ai-inferred and must be confirmed; no source states VIP Roofing Brisbane performs leak repair. If confirmed, the copy should move from pain point to process: identify the leak source, document visible damage, repair the failed component and advise on prevention. Roof replacement is another likely service because the parked page displays Roofing Materials For Replacement and Metal Roof Installation Price, but these are advertising search terms on a parked page, not genuine business copy. If the client confirms replacement work, the page should cover material choice, roof condition assessment, ventilation, gutter interface, scheduling and site cleanup. Metal roofing installation is also suggested only with caution. The parked page includes Commercial Metal Roofing Near Me and Metal Roof Installation Price, and Brisbane has strong demand for Colorbond and metal roofing, but there is no verified service description. If offered, the site should specify whether VIP handles residential metal roofs, commercial metal roofs or both. Gutter work is the only adjacent service keyword detected by the master audit, but no details exist. A gutter page should not overpromise; it should be written after confirming whether the team repairs gutters, replaces gutters, cleans gutters, installs downpipes or handles stormwater drainage tie-ins. The Services architecture should also allow future pages for roof inspections, storm damage, insurance reports and maintenance. These are ai-inferred service expansions, useful for wireframes and SEO planning, but they must be validated before the site says VIP Roofing Brisbane offers them. The critical content principle is simple: use verified facts for launch pages, then enrich each service with real project examples, materials, warranty details and review quotes once collected.

5 · Service Area · 地理覆盖

The confirmed geography is Brisbane, with the business address specifically in Brisbane City. The Google Business Profile lists 39/71 Eagle St, Brisbane City QLD 4000, Australia, and the master audit identifies the city as Brisbane. Tinyfish external mention titles also reinforce Brisbane and Brisbane City, including Poyst’s title VIP Roofing Brisbane Brisbane City – 5.0★ Reviews & Hours. No suburb-by-suburb service area was provided in the corpus, and no website copy confirms Northside, Southside, Logan, Ipswich, Redlands, Moreton Bay or Gold Coast coverage. For the redesign, the service-area content should therefore be honest: VIP Roofing Brisbane is a Brisbane roofing contractor based in Brisbane City, with service coverage to be confirmed directly with the business. For SEO wireframes, create a Service Areas page with a verified core section for Brisbane and Brisbane City, then a pending-suburbs module that can be activated only after confirmation. Suggested nearby suburbs for future SEO include Fortitude Valley, Spring Hill, New Farm, South Brisbane, West End, Kangaroo Point, Woolloongabba, Toowong, Paddington, Bulimba, Chermside and Indooroopilly; these are ai-inferred based on proximity and should not be presented as real service coverage until the client approves them. The page should avoid thin doorway pages at launch. Instead, it should use one strong Brisbane roofing service area page, include the verified address and phone number, add a map link, and explain how customers can call 07 3062 7779 to confirm availability for their suburb. Once review text or project records are available, the service-area section should be updated with real suburb proof such as completed jobs, testimonials or before/after photos.

6 · Customer Voice · 客户原声

The corpus confirms customer approval at a rating level but does not provide customer language. Google Business Profile reports a 5-star rating from 26 reviews, and the master audit repeats 5★ with 26 reviews. The Poyst search result title also references 5.0★ Reviews & Hours. However, google-reviews-verbatim is an empty array, reviews-analysis is null and no tinyfish mention returned raw markdown. This means the redesign team cannot legally or ethically quote any customer review text from the supplied corpus. The right strategy is to design for customer voice now and populate it later. The homepage should have a review-summary band near the hero with the verified statement 5-star Google rating from 26 reviews, without quoting individual reviewers. A testimonial carousel should be prepared with fields for quote, author, suburb and service type, but left unpublished or populated only after the client provides approved review excerpts. The most useful future review themes to extract will likely be punctuality, quality of workmanship, communication, value, cleanup and problem resolution; these are ai-inferred themes common to local trade reviews, not facts from the corpus. The current website creates the opposite of customer confidence. It shows related-search advertising, no phone number, no address, no reviews, no project photos and no credentials. The master audit states that the page sends visitors toward competitor-style results and gives them no way to contact VIP Roofing Brisbane. Customer voice therefore has to do two jobs in the redesign: reassure visitors that the business is real, and prove that other Brisbane customers have trusted them. Until verbatim reviews are available, the site should use only factual proof chips: 5.0 Google rating, 26 Google reviews, Brisbane City address, 07 3062 7779 phone, roofing contractor category. The human teammate should treat review extraction as a top launch blocker because real phrases will materially improve hero copy, About copy, service pages and conversion sections.

7 · Brand Voice & Visual Identity · 品牌语气与视觉

The current visual identity is mostly accidental because the owned domain is parked. The crawl exposes a dark navy background colour #10162c, a gold/orange hover colour #e09a00, white text, and Montserrat Regular loaded from a CDN. The master audit’s generated brand spec suggests a more refined palette: #0E1118 primary, #5A5C61 secondary, #B68B3F accent, white surface, #F4F4F5 muted surface and #E4E4E7 borders. The redesign should use the master brand spec rather than copying the parking page, but the dark navy/charcoal plus restrained gold direction is appropriate for a roofing contractor because it feels trade-professional, stable and premium without becoming flashy. Voice should be professional, plainspoken and local. The site should not sound luxurious or overly corporate; customers hiring roofers usually want clarity, speed, proof and a working phone number. Sample brand paragraph one: VIP Roofing Brisbane helps Brisbane property owners get clear roofing advice and a practical next step, starting with a direct call to 07 3062 7779. Sample brand paragraph two: Based in Brisbane City, the team is listed on Google as a roofing contractor and backed by a 5-star rating from 26 reviews. Sample brand paragraph three: The new website should make every page useful: what roofing issue the service solves, how the inspection works, what the customer receives and which credentials support the work. Sample brand paragraph four: Because the current domain is parked, the first brand impression must be rebuilt around real contact details, verified reviews, service clarity and visible proof of completed work. Visually, avoid stock-like roof silhouettes and generic construction icons as the main signal. The highest-impact assets will be real Brisbane roof photos, team photos and before/after project images. Until those are available, use a clean, text-forward design with a strong phone CTA and clear trust bar.

8 · Competitive Positioning · 竞争定位

The clearest competitive opportunity is recovery of trust. VIP Roofing Brisbane already has a Google profile with a 5-star rating from 26 reviews, a Brisbane City address and a local roofing-contractor category, but the current domain undermines that trust by displaying a parked or for-sale page. In a local trade market, many competitors will have ordinary websites but at least show phone numbers, service lists, project photos, licence details and reviews. VIP’s redesign can move quickly from severe digital disadvantage to credible local contender by making the basics excellent: visible phone number, tap-to-call mobile bar, verified Google rating, Brisbane location, licence/ABN once supplied, real roof photos and service pages that match common search intent. The distinction should not be invented as biggest, cheapest, family-owned or decades-experienced because none of those claims are supported. The verified positioning is: Brisbane roofing contractor, 5-star Google rating, 26 reviews, Brisbane City contact point. The ai-inferred positioning is: a practical, responsive roofer for homeowners, builders and property managers who need a clear quote and a reliable local contact. A strong first-party website will also stop the current leakage where domain-parking links send visitors into related searches like Commercial Metal Roofing Near Me or unrelated terms like Walk-In Showers for Bathrooms. The website strategy should frame the redesign as a trust rebuild: replace confusing ads with verified business details, replace silence with clear service information, replace no CTA with immediate phone contact, and replace no proof with review and project evidence as soon as available.

9 · Trust Signals Catalog · 信任凭证清单

Verified trust signals are limited but important. First, Google Business Profile lists VIP Roofing Brisbane as a roofing contractor with a 5-star rating and 26 reviews. Second, the business has a published phone number, 07 3062 7779, and a listed address at 39/71 Eagle St, Brisbane City QLD 4000, Australia. Third, external search mentions exist across Yelp, Facebook, Houzz, LinkedIn, Weebly, MapQuest, Instagram, Poyst and Whereis, although raw content was not available and should be verified before use. Fourth, the domain is location-keyword rich: viproofingbrisbane.com.au, which is valuable if reclaimed and deployed properly. Missing trust signals are just as important: ABN is null, QBCC or state licence is not found, insurance is not found, warranty is not found, founded year is not found, owner name is not found, project photos are not found, and verbatim customer testimonials are not found. The redesigned site should include a trust bar with only verified facts at launch: 5-star Google rating, 26 Google reviews, Brisbane City address and tap-to-call phone. It should include reserved fields for ABN, QBCC licence, insurance and workmanship warranty, but those fields must not be filled until confirmed by the business.

10 · Visitor Personas · 访客画像

The homeowner persona is likely the highest-value visitor. They may have a leak, damaged roof, ageing materials, storm concerns or a planned replacement. Their decision criteria are fast contact, proof the roofer is real, local availability, licence/insurance confidence and plain-English explanation. The new site should let this visitor call 07 3062 7779 immediately, then scan services, reviews and photos before committing to an inspection. The builder or renovator persona needs a roofer who can fit into a schedule, communicate clearly and provide a scope that aligns with other trades. The corpus does not verify builder work, so this persona should only be targeted if confirmed, but the website can prepare a Commercial and Builders page as a draft module. The commercial property or facilities persona cares about responsiveness, access, safety, insurance, reporting and minimal disruption. Again, commercial metal roofing appears only as a parked-page ad term, so it should be treated as ai-inferred until verified. The insurance or storm-damage persona needs documentation, photos, cause assessment and a clear written quote. This service path is not verified but is typical for roofing in Queensland. The final persona is the comparison shopper from Google Maps. This visitor has seen the 5-star rating and clicks through expecting proof. Today they land on a parked page and likely leave. The redesigned homepage must be built for this person above all: business name, roofing contractor, Brisbane City, 5-star rating, 26 reviews, phone CTA, service list and real proof within the first few scrolls.

11 · Pricing & Sales Cycle · 定价线索与销售周期

No pricing, quote policy, job duration, deposit terms, payment methods or finance options were found in the corpus. The parked page displays ad terms such as Metal Roof Installation Price, but those are not VIP Roofing Brisbane’s pricing signals and should not be treated as service copy. For a roofing contractor, the sales cycle is usually problem-driven: a customer notices a leak, visible roof damage, gutter issue or planned replacement need, then compares local roofers, checks reviews, calls for availability and requests an inspection or quote. This is ai-inferred, not directly verified. The website should therefore avoid publishing specific price ranges unless the business provides them. Instead, it should answer pricing questions with factors: roof size, material, access, pitch, damage extent, safety requirements, waste removal and urgency. The primary conversion should be a call or quote request, not an online checkout. The audit indicates the current site has no visible CTA, no phone number and no contact method, which breaks the sales cycle at the first step. The redesign should restore that path with phone-first CTAs, a short quote form and a promise of clear next steps. Form fields should include name, phone, suburb, property type, service needed, brief issue description, preferred timing and photo upload. Any statements about free quotes, same-day service, emergency callouts or warranty must be confirmed before publishing.

12 · Website Strategy · 网站结构建议

The website should be rebuilt as a real local-service site, not a visual refresh of the current domain. Recommended pages are Home, Services, Roof Repairs, Roof Replacement, Metal Roofing, Guttering, Roof Inspections, Service Areas, Projects, Reviews, About and Contact. Only Home, Services, Service Areas and Contact can be written confidently from the current corpus; the individual service pages need client validation before launch. The Home page’s role is immediate trust recovery: show VIP Roofing Brisbane, roofing contractor in Brisbane, 5-star Google rating from 26 reviews, Brisbane City address and tap-to-call 07 3062 7779. The Services page should explain confirmed offerings once verified and keep unverified services in draft. The Service Areas page should start with Brisbane and Brisbane City and later expand into approved suburbs. The Projects page should be a high priority because there are no usable project descriptions in the corpus; even three real roof projects would transform the site’s credibility. The Reviews page should use verified Google rating initially and add verbatim review excerpts once obtained. The About page should present the business without fake history: local Brisbane roofing contractor, contact details, Google review proof and a commitment to clear roofing advice. Contact should include click-to-call, quote form, address, hours once verified, and map link. Technical strategy should include LocalBusiness JSON-LD, Service schema, FAQPage schema, AggregateRating schema if compliant, sitemap.xml, robots.txt with AI bot policy, analytics, conversion tracking and a working tel: link. The first design priority is mobile: sticky phone CTA, concise hero, review proof chips and no dead-end links.

13 · Header Components · 顶部组件

The header should correct the current site’s biggest failure: visitors cannot see a business phone number or real CTA. Desktop header should include the VIP Roofing Brisbane wordmark or text logo, navigation links for Services, Service Areas, Projects, Reviews, About and Contact, the verified phone number 07 3062 7779 as a tel link, and a primary Request a Quote button. If no logo asset is supplied, use a clean text lockup with VIP Roofing Brisbane and a small descriptor such as Roofing Contractor, Brisbane; do not invent a crest or badge that implies licensing. Mobile header should be compact: logo/text lockup on the left, phone icon button and menu icon on the right, plus a sticky bottom Call 07 3062 7779 CTA. The menu should expose Services, Service Areas, Reviews, About and Contact, with the quote CTA repeated at the bottom. Header trust chips can include 5-star Google rating and 26 reviews, but avoid cramming them into the top nav on small screens. Because the current website is a parked page, every header element must be first-party and conversion-oriented. No external directory links should appear in the primary navigation unless deliberately used for review proof.

14 · Footer Components · 底部组件

The footer should function as the site’s trust and verification shelf. It should repeat the business name VIP Roofing Brisbane, the verified phone number 07 3062 7779, and the address 39/71 Eagle St, Brisbane City QLD 4000, Australia. Include a map link to the address and a short line such as Brisbane roofing contractor listed on Google with a 5-star rating from 26 reviews. Add footer navigation for Home, Services, Service Areas, Projects, Reviews, About, Contact, Privacy Policy and Terms if created. Include a Credentials block with placeholders clearly marked for ABN, QBCC licence, insurance and warranty; these should be hidden or labelled pending internally until verified, not published as blanks. Hours should be included only after the business confirms them because the corpus did not provide a weekly schedule. Social links can be added after verifying the Facebook and Instagram profiles returned by tinyfish. The footer can also include a simple service-area sentence: Based in Brisbane City and serving Brisbane, with additional suburbs to be confirmed. Add LocalBusiness schema using verified NAP details, but do not add missing fields like openingHours or taxID until supplied. The footer should avoid using the parked page’s privacy link or third-party ad links. Its job is to close the trust loop for cautious visitors who scroll to the bottom before calling.

15 · CTA Strategy · 行动召唤策略

The primary CTA should be phone-first: Call 07 3062 7779. That is the only verified direct conversion channel in the corpus, and the audit identifies absence of visible phone and click-to-call as critical failures. Place the primary CTA in the desktop header, hero section, sticky mobile bottom bar, service page sidebars, review sections and footer. The secondary CTA should be Request a Roofing Quote, leading to a short form. The quote form should ask for name, phone, email if desired, suburb, service type, property type, urgency, message and optional photo upload. Do not ask for too much information before the first contact; roofing leads often convert better when the business can call back quickly. A tertiary CTA can be View Services or See Service Areas, but those should support, not replace, phone and quote actions. Because the current domain sends people into competitor-style related searches, every CTA must keep visitors within the VIP Roofing Brisbane experience. Avoid generic Learn More buttons in high-intent sections. Use specific actions: Call now, Request quote, Check if we service your suburb, Send roof photos. For trust-sensitive sections, pair CTA with verified proof chips: 5-star Google rating, 26 reviews, Brisbane City address. Any CTA promising free quotes, emergency response, same-day inspections or warranties requires client confirmation before publication.

16 · Hero Copy Options · 首屏文案候选

Option 1

  • Eyebrow: Brisbane City roofing contractor
  • H1: Brisbane Roofing Contractor Rated 5 Stars by 26 Google Reviewers
  • Subhead: VIP Roofing Brisbane is listed on Google as a roofing contractor at 39/71 Eagle St, Brisbane City. Call 07 3062 7779 to speak with the business and confirm availability for your roofing job.
  • Proof chips: 5-star Google rating · 26 Google reviews · Brisbane City address

Option 2

  • Eyebrow: Call 07 3062 7779
  • H1: VIP Roofing Brisbane: 5-Star Local Roofing Help in Brisbane
  • Subhead: A rebuilt website should make the essentials clear from the first screen: VIP Roofing Brisbane, roofing contractor, Brisbane City, 5-star Google rating from 26 reviews, and a direct tap-to-call phone number.
  • Proof chips: 07 3062 7779 · Roofing contractor · Brisbane City QLD 4000

Option 3

  • Eyebrow: Website recovery priority
  • H1: Turn a 27/100 Parked Domain into a Real Brisbane Roofing Website
  • Subhead: The current domain is parked and shows related-search ads instead of business content. The redesign should replace that experience with verified contact details, service clarity, review proof and first-party quote actions.
  • Proof chips: Audit score 27/100 · 5-star Google rating · 26 reviews

17 · About Us Page · 可直接发布的草稿

VIP Roofing Brisbane is a Brisbane roofing contractor listed on Google with a 5-star rating from 26 reviews. The business is associated with 39/71 Eagle St, Brisbane City QLD 4000 and can be contacted on 07 3062 7779. This About page should be published only with verified credentials added, but the foundation is clear: customers searching for roofing help in Brisbane need a real local contact, visible proof and a simple way to ask for a quote. The current viproofingbrisbane.com.au domain does not yet provide that experience. It resolves to a parked or for-sale page with related-search advertising rather than a genuine company website. This new website is designed to make the business easier to understand and easier to contact. Visitors should be able to see the company name, roofing category, Brisbane location, Google review proof and phone number without hunting through the page. The site should also explain the roofing services VIP Roofing Brisbane confirms it provides, the suburbs it serves, and the credentials that matter for roofing work in Queensland. Before launch, the business should supply its ABN, QBCC licence details, insurance wording, warranty policy, operating hours, team or owner story, and real project photos. Those details will turn this page from a factual business introduction into a persuasive local brand story. Until then, the safest message is direct: VIP Roofing Brisbane is a Brisbane roofing contractor with a strong Google rating and a current need for a proper website that reflects the business customers expected to find when they clicked from Google.

18 · FAQ · 推荐的问答清单

Q1: What is VIP Roofing Brisbane?

VIP Roofing Brisbane is listed on Google as a roofing contractor in Brisbane. The Google Business Profile shows the business name, phone number 07 3062 7779, address at 39/71 Eagle St, Brisbane City QLD 4000, a 5-star rating and 26 reviews. No detailed company history, owner bio or service-page copy was included in the supplied corpus.

Q2: What phone number should the website use?

Use the verified Google Business Profile phone number: 07 3062 7779. It should appear in the desktop header, mobile sticky call bar, hero section, contact page and footer. The number should be coded as a click-to-call tel link so mobile visitors can call directly without copying and pasting.

Q3: What address should appear on the site?

The verified address is 39/71 Eagle St, Brisbane City QLD 4000, Australia. The footer and contact page should use this exact address, ideally with a map link. If the business uses this as an office, mailing address or service-area marker rather than a walk-in location, that distinction should be confirmed before launch.

Q4: Can we say VIP Roofing Brisbane is licensed?

Not yet. The supplied data does not include a QBCC licence number, ABN, insurance certificate or state licence detail. The website should reserve space for these trust signals but should not publish licensing claims until the business provides verified information. This is especially important for Queensland roofing work.

Q5: Can we use Google review quotes?

The site can state the verified aggregate signal: 5-star Google rating from 26 reviews. The corpus did not include verbatim review text, reviewer names or locations, so no individual testimonials should be quoted yet. Before launch, export or manually collect approved review excerpts for the testimonial and Reviews pages.

Q6: What services should be on the website?

The confirmed category is roofing contractor, and the audit detected roofing, roof and gutter keywords. Specific pages such as roof repairs, roof replacement, metal roofing, guttering and inspections are sensible draft pages, but each must be confirmed with the business before publication.

Q7: Which suburbs should the site target?

The confirmed geography is Brisbane and Brisbane City. Nearby suburbs such as Fortitude Valley, New Farm, Spring Hill, South Brisbane, West End and Kangaroo Point are useful SEO candidates, but they are ai-inferred and should not be presented as verified service coverage until the business approves the list.

Q8: What is wrong with the current website?

The current domain resolves to a parked or for-sale page, not a real roofing website. The crawl shows related-search ads and no genuine business content, while the master audit flags no visible phone, no CTA, no reviews, no photos, no credentials, no LocalBusiness schema and no service copy.

Q9: Should the redesign keep the current colours?

The parked page uses dark navy #10162c and orange #e09a00, but those may not be intentional brand colours. The master brand spec recommends a refined charcoal, muted grey, gold accent and clean white surfaces. That direction is suitable for a professional roofing contractor, pending any real logo or brand assets.

Q10: Does VIP Roofing Brisbane have project photos?

No usable owned-site project photos were included in the corpus. Tinyfish found a Yelp result titled Updated May 2026 - 23 Photos and a Houzz Project Photos & Reviews result, but raw content was not available. The human team should verify those sources and request original project photos from the business.

Q11: What should the primary website CTA be?

The primary CTA should be Call 07 3062 7779 because the phone number is verified and local trade customers often want fast direct contact. A secondary Request a Roofing Quote form should collect name, phone, suburb, service type, issue description and optional photos.

Q12: Can we claim years in business or founded year?

No. WHOIS did not provide domain age, Wayback is null, and the website crawl contains no established or since statement. The site should not claim a founding year, years of experience or family-owned history until the client confirms it and provides supporting details.

19 · TODO · 人工核实清单

  1. Verify active business status and correct website/domain ownership with VIP Roofing Brisbane.
  2. Collect ABN, QBCC licence number, insurance wording and warranty policy before publishing trust claims.
  3. Export full Google reviews with reviewer names and suburbs where available.
  4. Confirm the exact service list: repairs, replacement, metal roofing, tile roofing, guttering, inspections, storm damage and commercial work.
  5. Confirm service suburbs beyond Brisbane and Brisbane City.
  6. Request real project photos and permission to use any Yelp, Houzz, Facebook or Instagram images.
  7. Confirm opening hours and whether the Eagle St address is a public office, mailing address or service-area address.
  8. Get owner or manager name, role and one short quote for the About page.
  9. Decide whether to reclaim viproofingbrisbane.com.au or launch a new domain and update GBP immediately.
  10. Set up analytics, conversion tracking, sitemap, LocalBusiness schema, Service schema and FAQ schema before launch.

*This brief was generated by pl:llm-extract-core fusing 1 crawled pages + 10 tinyfish mentions + GBP + verbatim Google reviews + ABN + WHOIS/Wayback + ? image refs. Provider: codex_cli · 240s · 141KB prompt → 5000c response.*

📋 速查 (table form)

real_facts · 客户原文 (带来源标注)

business_nameVIP Roofing Brisbane GBP · master-md
phone1 item(s) GBP · master-md
email0 item(s) website-crawl · master-md
address39/71 Eagle St, Brisbane City QLD 4000, Australia GBP · master-md
hours(null) GBP · website-crawl · tinyfish-mention
license_numbers{"abn":null,"vba":null,"qbcc":null,"state_license":null} abn · website-crawl · master-md
founded_year(null) website-crawl · tinyfish-mention · whois · wayback
owner_name(null) website-crawl · tinyfish-mention
service_list4 item(s) GBP · master-md · website-crawl
suburbs_served2 item(s) GBP · master-md
testimonials0 item(s) google-reviews-verbatim
team_members0 item(s) website-crawl · tinyfish-mention
domain_age_years(null) whois · wayback
domain{"domain":"viproofingbrisbane.com.au","registered_at":null,"expires_at":null,"last_changed_at":"2026-03-08","registrar":"DROP.com.au Pty Ltd","status":["server renew prohibited"],"privacy_redacted":tr whois · master-md
abn(null) abn
google_rating5 GBP · master-md
google_review_count26 GBP · master-md
google_categories3 item(s) GBP
website_statusThe current domain resolves to a parked or for-sale page with related-search advertising, not a functioning business website. website-crawl · master-md
audit_score27 master-md

services_list (4)

Roofing contractorThe Google Business Profile categorises VIP Roofing Brisbane as a roofing contractor serving Brisbane.
RoofingThe master audit detected roofing as a service keyword associated with the current site/domain.
RoofThe master audit detected roof as a service keyword associated with the current site/domain.
GutterThe master audit detected gutter as a service keyword associated with the current site/domain, but no detailed gutter service page or description was provided.

suburbs_served (2)

Brisbane Brisbane City

testimonials (0)

ai_extensions · AI 延伸 (标 ai-inferred)

suggested service expansionsRoof leak detection and repair Roof replacement Metal roofing installation Gutter repairs and replacement Storm damage roof repairs Roof inspections and reports
suggested suburbs[object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object] [object Object]
hero copy candidates
▸ {"h1":"Brisbane Roofing Contractor Rated 5 Stars by 26 Google Reviewers","source":"ai-inferred","verified_number_used":"5 stars, 26 reviews"
▸ {"h1":"VIP Roofing Brisbane: 07 3062 7779 for Roofing Help in Brisbane City","source":"ai-inferred","verified_number_used":"07 3062 7779"}
▸ {"h1":"A Real Website for a 5-Star Brisbane Roofing Business","source":"ai-inferred","verified_number_used":"5-star Google rating"}
suggested FAQs7 suggestions

data_gaps · 仍缺的信息

recommended_next_steps

  1. Call the business at 07 3062 7779 to verify active trading status, service scope, service area, owner name, licence, ABN, insurance and warranty language.
  2. Export the full Google review corpus so the site can use real customer phrases instead of generic testimonial copy.
  3. Collect 8-12 real project photos, ideally roof before/after images, team-at-work images and finished roofing detail shots.
  4. Confirm whether viproofingbrisbane.com.au can be reclaimed or whether the Google Business Profile should be updated to a new live domain immediately.
  5. Verify and publish QBCC licence, ABN, insurance and warranty details before launch.

2LLM 处理 · 三种处理类型

每条 LLM 输出都带 _source 标注 · verified:scraped 不重写 · ai-completed AI 重写 · ai-inferred 推理提炼

2.1 · Services 提取 · verified:scraped

✗ 0 services · claude:claude-sonnet-4-5

2.2 · About narrative · ai-rewritten

# About VIP Roofing Brisbane
VIP Roofing Brisbane 自 2015 在 Brisbane 经营 · 至今 11 年。
Google 评分: 5★ · 26 条评论。
## 备注
MVP 阶段 · 这段为 niche typical + 硬数据综合 · LLM 综合升级见 V3-HANDOFF-STRUCTURE Phase B (Cascade A 调用)。

2.3 · Hero copy 候选 · ai-completed

angleservice-led
headlineMetal Roofing, Repairs & Full Restorations Across Brisbane
subheadlineFrom quick leak fixes to complete roof replacements. Licensed roofers serving Indooropilly and surrounding suburbs with upfront pricing.
proof_chips
rationaleImmediately communicates the full service range and makes the phone number the primary action, removing any confusion about what they do or how to contact them.
_sourceai-completed:claude:claude-sonnet-4-5

angleurgency-led
headlineRoof Leaking? We Fix Brisbane Roofs Fast—Today or Tomorrow
subheadlineEmergency repairs, insurance work, and full restorations. Metal roofing specialists based in Indooropilly with same-week availability for urgent jobs.
proof_chips
rationaleAddresses the most common pain point (leaks) with a time-specific promise, making the CTA feel immediately relevant for distressed homeowners.
_sourceai-completed:claude:claude-sonnet-4-5

angletrust-led
headlineLicensed Brisbane Roofers—No Subbies, No Surprises, No Runaround
subheadlineWe do the work ourselves: roof repairs, metal roofing, and full restorations. Serving Indooropilly homes and businesses with honest quotes and clean finishes.
proof_chips
rationaleTackles the industry's credibility problem head-on by promising direct accountability, which immediately sets them apart from franchises and subcontractor networks.
_sourceai-completed:claude:claude-sonnet-4-5

2.4 · Reviews 分析 · ai-inferred

未分析

3OD Handoff Package · v2-spec.json 单一源

所有上游数据汇成 v2-spec.json · composer 直接读 · 8 个目录 / 12 个顶层项

3.1 · v2-spec.json 顶层 schema

version2.0
niche / familyroofing / industrial-trade-credible
facts15 keys
services0
pages6
brand5 keys (logo / colors / fonts)
narrative_contenthero_copy · team · timeline · case_studies · reviews · faqs · about_md
assets.work6 张真照片

3.2 · Pages 列表 + per-page blocks

/home · 10 blocks · index.html
/roof-restorationservice-detail · 9 blocks · roof-restoration.html
/roof-repairservice-detail · 9 blocks · roof-repair.html
/gutter-replacementservice-detail · 9 blocks · gutter-replacement.html
/aboutabout · 8 blocks · about.html
/contactcontact · 6 blocks · contact.html

3.3 · Brand 资产(logo-skill 输出 · 12 SVG variants)

logo-light.svg查看
logo-dark.svg查看
logo-mono-light.svg查看
logo-mono-dark.svg查看
logo-mark.svg查看
logo-wordmark.svg查看
favicon.svg查看
social-avatar.svg查看

3.4 · 完整文件清单

v2-spec.json (V2 schema)
facts.json (locked facts)
DESIGN-HANDOFF.md (design contract)
DESIGN-MANIFEST.json (design spec)
content/services.json (B1 extract · _source 标注)
content/about.md (B2 extract)
content/hero-copy.json (B3 LLM-rewritten)
content/faq.json
structure/page-map.json
structure/header.json + footer.json + cta-system.json
brand/ (12 SVG + brand-tokens.css + visual-style-contract.md)
shared/shared.css (composer 用)
assets/ (真客户照片 + work/)
asset-prompts.md (image gen prompts)

3.5新网站页面 Wireframe(AI 设计)

LLM 读完所有原始数据 + BEST-PRACTICES + niche-spec · 输出每个 block 的完整文案 + ASCII wireframe + layout intent + 每条 fact 的来源 + inference 标注 · 不含颜色/字体(那是 DESIGN.md 的工作 · 套上去就是完整页面)

尚未生成 wireframe · 运行 npm run pl:llm-wireframe-page -- --slug vip-roofing-brisbane --page home --llm claude

4V2 Composer 输出 · 确定性多页渲染

composer 读 v2-spec.json · 用模块库 27 个 + 各页 block 组合 · 全程无 LLM

HTML 页数6 页
模块默认图(modules-assets)25 张
composer 文件scripts/cli/pl-compose-site.js
模块库templates/roofing/modules/ · 27 模块

4.1 · 已渲染的页面(点击预览)

about.html本地 · live
contact.html本地 · live
gutter-replacement.html本地 · live
index.html本地 · live
roof-repair.html本地 · live
roof-restoration.html本地 · live

4.2 · Live 站点 iframe 预览(home)

5全面 Audit · 8 类检查

5.1 · 各类 audit 结果

Handoff schema 校验
pl:validate-handoff
JSON schema · ref 解析 · asset 存在 · 模块可用
✗ FAIL · licensing.full_name null
Page walk · 链接 + 厚度
pl:walk-site
6 页 · 0 broken · 0 thin
✓ PASS
Detailed audit (39 规则)
Block D · 6 维 39 rules
strong_redesign
27/100
Vision audit (Ollama)
Block E · 现网截图 LLM 评
新鲜度/信任/转化 + issue 列表
?/?/?
10-dim Vision rubric
pl:audit-vision · composer output 10 维评
core / copy / hero / module / design / image / ...
PageSpeed Insights
Google PSI · 现网 mobile + desktop
LCP / FCP / CLS · WebP / lazy load / srcset / alt
见 master.md
GEO Readiness
12 条 AI 可发现性
llms.txt / JSON-LD / FAQ pattern / robots AI policy
20/100
Trust credentials
License / 保险 / 年限 / 奖项
显/缺 inventory
40/100

5.2 · 现网 issue 详细(master.md §五)

每个 issue 4-layer 结构:技术事实 / 普通话翻译 / 客户影响 / 标准答案 / Redesign 怎么改

→ 看完整 master.md 渲染版(21 章) · → Internal audit HTML

5.3 · V2 Composer 输出已知 gap(要补)

about page 文案没优化、图缺
  • about.html 用了 content/about.md 的 B2-extract 原版 · 没二次 PASTOR 重写 · 段落偏长偏 generic
  • about page 的 hero photo / team photo 引用空 · 应该用 GBP 真照片或客户提供的 team 照
  • 修法:加 pl:rewrite-narrative 二次重写 about-md 到 punchy + about-grid 模块 wire 进 GBP photos

5.4 · V2-spec.json 现在的字段够不够?

当前 v2-spec.json 仅含 facts / brand / services / pages / header / footer / narrative_content / assets。缺:

archetype 4-dim缺 · business_model / primary_material / lead_strategy / site_scale (家私 5 family 没自动路由)
voice profile缺 · tone_markers / brand_names / customer_quotes (LLM 已分析 reviews 但没注入 spec)
projects/case-studies缺 · 每个真项目 (suburb / material / scope / source_ref)
per-field _source缺 · spec 里字段没带 source 溯源(services.json 有 · 进 spec 丢了)

7模块库 + V2 Composer 原理

28 个模块 · composer 读 v2-spec.json → mini-Mustache 渲染 → 多页 HTML · 全程无 LLM

7.1 · 模块库 inventory(28 type)

about-body1 variant: sections-narrative
about-timeline1 variant: vertical
before-after1 variant: draggable-slider · + bundled assets
case-study1 variant: project-detail-list · + bundled assets
comparison-table1 variant: colorbond-vs-tile
contact-form1 variant: full-form
cta-band1 variant: centered-dark
emergency-callout1 variant: red-band
faq1 variant: accordion
financing-band1 variant: horizontal
gallery1 variant: grid-3col · + bundled assets
hero5 variants: cinematic-with-bundled-photo · compact-banner · fullbleed-with-form · fullbleed-with-stats · split-image-right · + bundled assets
lead-form1 variant: compact-band
legal-body1 variant: placeholder
map-embed1 variant: google-iframe
process1 variant: four-step-horizontal
product-spotlight1 variant: single-material
proof-strip1 variant: logos-row
reviews1 variant: card-grid-3col
safety-insurance1 variant: coverage-band
service-areas1 variant: chip-list
services-grid1 variant: icon-cards-3col
spec-callout1 variant: profile-trio
stats-band1 variant: big-numbers
team-grid1 variant: staff-cards · + bundled assets
trust-bar1 variant: horizontal-chips
warranty-detail1 variant: three-tier
why-us1 variant: three-col-numbers

7.2 · 单个模块长什么样(hero/cinematic-with-bundled-photo · 示例)

每个模块 = HTML structure + inline CSS + mini-Mustache 变量。变量用 {{var}} · 条件 {{?cond}}...{{/cond}} · 循环 {{#list}}...{{/list}}

查看完整模块代码(2221 chars)
<section class="hero-cinematic">
  <div class="hero-cinematic-bg" style="background-image: linear-gradient(180deg, rgba(15,17,21,0.4) 0%, rgba(15,17,21,0.55) 50%, rgba(15,17,21,0.85) 100%), url('{{?hero.image}}{{hero.image}}{{/hero.image}}{{^hero.image}}{{template_assets}}/hero/cinematic-default.png{{/hero.image}}');"></div>
  <div class="container hero-cinematic-inner">
    <div class="hero-cinematic-text">
      <p class="hero-eyebrow">{{city}} · {{state}} · {{licensing_authority}} Licensed</p>
      <h1 class="hero-cinematic-h1">{{hero.headline}}</h1>
      <p class="hero-cinematic-sub">{{hero.subheadline}}</p>
      <div class="hero-cinematic-cta">
        <a class="btn-primary hero-cinematic-primary" href="{{hero.primary_cta_href}}">{{hero.primary_cta_label}}</a>
        <a class="hero-cinematic-secondary" href="#quote-form">{{hero.secondary_cta_label}} →</a>
      </div>
    </div>
  </div>
</section>
<style>
.hero-cinematic { position: relative; min-height: 90vh; display: flex; align-items: center; color: #fff; overflow: hidden; }
.hero-cinematic-bg { position: absolute; inset: 0; background-size: cover; background-position: center; z-index: -1; }
.hero-cinematic-inner { display: flex; align-items: flex-end; min-height: 90vh; padding: 64px 0; }
.hero-cinematic-text { max-width: 760px; }
.hero-cinematic .hero-eyebrow { font-family: 'Inter', monospace; font-size: 11px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--brand-accent); margin: 0 0 24px; font-weight: 700; }
.hero-cinematic-h1 { font-family: var(--font-display); font-size: clamp(48px, 7.5vw, 96px); line-height: 0.96; letter-spacing: -0.03em; margin: 0 0 28px; font-weight: 700; }
.hero-cinematic-sub { font-size: 21px; line-height: 1.5; max-width: 600px; color: rgba(255,255,255,0.9); margin: 0 0 40px; }
.hero-cinematic-cta { display: flex; gap: 24px; align-items: center; flex-wrap: wrap; }
.hero-cinematic-primary { padding: 18px 32px; font-size: 16px; }
.hero-cinematic-secondary { color: #fff; text-decoration: underline; text-underline-offset: 4px; font-weight: 700; font-size: 15px; }
@media (max-width: 820px) { .hero-cinematic { min-height: 70vh; } .hero-cinematic-inner { min-height: 70vh; } }
</style>

7.3 · Composer 工作原理(4 步)

1. 读 v2-spec.json
   pages: [{slug: "/", role: "home", blocks: [hero, trust-bar, services-grid, ...]}, ...]

2. 对每个 page · 每个 block:
   a) 按 type 找 modules/<type>/<variant>.html
      (hero 用 HERO_VARIANT_BY_ROLE 选 variant · home=fullbleed-with-form · service=cinematic · about=compact-banner)
   b) 读 module HTML 模板
   c) 用 page context 渲染 mini-Mustache 变量
      pageCtx = { ...spec.facts, services, hero, page_role, template_assets, ... }

3. 拼成完整 HTML:
   <DOCTYPE> + <head>(shared.css link) + header(generated from v2.header) +
   <main>(所有 blocks 串联) + footer(generated from v2.footer)

4. adjustPaths · 处理相对路径
   - depth-aware: /about.html → about.html · /services/foo.html → ../services/foo.html
   - url('assets/...') → 加上 depth 前缀
   - 绝对路径 /xxx → 转 page-relative

输出 · clients/<slug>/v2/composed-output/
   ├── index.html         (home · 10 blocks)
   ├── about.html         (about · 8 blocks)
   ├── services.html
   ├── new-roofs.html
   ├── ... 8 个 HTML 文件
   ├── shared/shared.css
   ├── brand/  (logo SVG + tokens)
   ├── assets/ (真客户图)
   └── modules-assets/  (模块 bundled 默认图 · fallback)

确定性:同 v2-spec.json 跑 100 次输出字节一致 · 0 LLM 在渲染链路

7.4 · vicwest home 实际用了哪些模块

1. herovariant=(default · first .html)
2. trust-barvariant=(default · first .html)
3. services-gridvariant=(default · first .html)
4. why-usvariant=(default · first .html)
5. processvariant=(default · first .html)
6. before-aftervariant=(default · first .html)
7. stats-bandvariant=(default · first .html)
8. reviewsvariant=(default · first .html)
9. lead-formvariant=(default · first .html)
10. cta-bandvariant=(default · first .html)

7.5 · 看一个模块的实际渲染结果(hero from index.html)

iframe 嵌 vicwest home · 第一屏即第 1 个模块(hero)渲染输出

6发布 · CF Pages 实时链接

Demo (V2 composer)https://vip-roofing-brisbane-dev.pages.dev
Master.md (21 章 raw + provenance)/master.md
Master.md HTML 渲染版/master.report.html
Customer-facing audit (英文)/customer-facing-audit.html
Internal audit (中文)/internal-audit-report.html
Pipeline tracker (this page)/pipeline.html

6.1 · 多页导航(V2 composer 输出 · 都点得动)

about.htmlhttps://vip-roofing-brisbane-dev.pages.dev/about.html
contact.htmlhttps://vip-roofing-brisbane-dev.pages.dev/contact.html
gutter-replacement.htmlhttps://vip-roofing-brisbane-dev.pages.dev/gutter-replacement.html
index.htmlhttps://vip-roofing-brisbane-dev.pages.dev/index.html
roof-repair.htmlhttps://vip-roofing-brisbane-dev.pages.dev/roof-repair.html
roof-restoration.htmlhttps://vip-roofing-brisbane-dev.pages.dev/roof-restoration.html

8OD Baseline · 89/100 参考

2026-05-18 跑出来的第一个 stable 结果 · 锁定作为 baseline · 后面所有的实验都和这个对比

Composite89/100
Vision (10-dim)90.3/100
Copy judge (5-dim)47/50
Image score (D6+D9)40.8/50
L1 locked-facts✓ PASS (customer pages)
L2 content quality✓ PASS
L3 build sanity⚠ 1 minor failure · non-blocking
Pages produced10 multi-page · all HTTP 200
Live URLhttps://vip-roofing-brisbane-od-dev.pages.dev
OD project (Mac app)vicwest-roofing Open Design concept
Snapshotclients/vip-roofing-brisbane/concept/od-baseline-89/

8.1 · 输入到 OD 的内容(seed 的快照)

这些是产生 89 分输出的精确输入 · 后面想优化先理解这套输入

prompt.txt (0.0 KB)PRIMARY directive · sent via --prompt arg to codex (not just a seed file)
brief-summary.md (0.0 KB)compact customer brief · 19 sections distilled from the full 5500-word brief
DESIGN-HANDOFF.md (0.0 KB)per-page block plan + header/footer contract + hard rules
site-architecture.jsonsanitized · meta-fields (purpose / differentiation_note / copy_brief / content_focus / primary_visitor_intent / role) stripped before seeding
facts.json (0.0 KB)locked verbatim facts · phone, email, ABN, address, hours, owner, services, suburbs, testimonials
assets/ (0 photos + work/)real customer photos from GMB + owned website
brand/brand-spec.json + logo SVGs (light / dark / mark) + brand contract
references/family-DESIGN.md (550 lines) + BEST-PRACTICES.md + niche-spec.md

8.2 · 关键 9 条 hard rules 在 prompt.txt 里(农生 89 分的核心)

  1. Phone 0403 554 592 + tel: link in header AND hero AND footer AND mid-page CTA (verbatim check)
  2. Email info@vicwestroofing.com.au with mailto: link in footer AND contact page (verbatim check)
  3. VBA exact wording "Licensed by the VBA" in trust-bar AND every footer
  4. ABN 69 622 718 361 in every footer legal sentence
  5. ≥ 600 words customer-facing copy per page · hero ≥ 80 words · service block ≥ 100 words
  6. Every page has ≥ 1 working <form> for quote/contact
  7. 10 HTML files (NOT collapsed into one index.html)
  8. Shared header/footer byte-identical across all pages
  9. Google Fonts <link> tags loaded in <head> (specifying font-family in CSS is insufficient)

8.3 · 经验教训(getting to 89 的过程)

这些是从失败中学到的 · 不要重蹈覆辙

  1. --prompt 是主要 directive · seed 文件是次要的 — OD 的 run-concept.js--prompt 发给 codex 作为 THE 指令。seed dir 里的文件是 project 文件,agent 可能读可能不读。Orchestrator 必须把 seed/prompt.txt 内容通过 --prompt 传给 OD · 否则得到 1-page 184-word 输出。
  2. Verbatim checklists 打败 aspirational language — "use real customer facts" → generic output. "Phone 0403 554 592 AND tel: link must appear in (a) header (b) hero (c) every form (d) sticky mobile bar (e) footer" → 600+ words per page · Vision 跳 40→90 · Copy 跳 21→47.
  3. L1 audit 要排除非客户页面 — OD 生成的 brand/preview.html 等 side artifact 不应作为客户页面 audit · 否则会造成 false-negative composite=0.
  4. Vision audit 是 per-page array · 不是 top-levelvision.dim_scores 不存在 · 实际是 vision.vision_results[].scores.D6_hero_quality · 必须聚合.
  5. Claude CLI 在 50KB+ prompt 上 hang · codex 不会 — judge 和 extraction 凡是 prompt >30KB 必须用 codex with hard 5min timeout. Claude CLI 只用 short prompts.
  6. Mac OD app GUI 可见性需要 IPC discover daemon URL/tmp/open-design/ipc/release-stable/daemon.sock 返回随机 HTTP port. 我们要 attach 到 Mac app 的 daemon 而不是 spawn 自己的 port 7466.
  7. Resume-on-checkpoint 必须 check composite · 不是只 ok-flag — composite=0 的 variants 也是 ok:true (audit ran OK 只是 scored 0) · 必须 retry · 不能 skip.
  8. 设计 token (font-family) 不等于 loading the font — agent 写了 font-family: 'Inter Tight' 但没加 <link href="fonts.googleapis.com/...> · 浏览器 fall back 到 generic sans · 设计语言看起来"凌乱". 必须显式要求 Google Fonts <link> 标签.
  9. Agent 把 home-page hero 模式应用到每一页 — DESIGN.md 规定 4 种 hero variants (fullbleed-with-form for home only · compact-banner for 其他). Agent 把 fullbleed-with-form 应用到所有 10 页 · inner pages 上 form 跑出 hero 之外 · 视觉破坏. Prompt 必须 explicit 列出 "ONLY home uses fullbleed-with-form".
  10. DESIGN.md 550 行太长 · agent 只 process 前 ~100-200 行 — agent 跳过 hero variants per page / section-head pattern / spacing scale / component specs. 需要 100-line 关键规则 distillation OR 直接 embed in prompt.txt.
  11. site-architecture.json 的 meta-fields 泄漏到客户文案 — fields 像 purpose / differentiation_note / copy_brief / content_focus / primary_visitor_intent / role 本是 architect 给 copywriter LLM 的笔记. OD 单 agent 读到时无法区分 "instructions to me" 和 "content I should write" — agent 把它们 paraphrase 成可见文案. 例如 "The people visitors deal with before and during roof work" 原本是 purpose note. 修复: pl:build-od-seed 现在在 seed 之前 strip 这些 fields.

8.4 · 已知 baseline 的缺陷(待优化)

8.5 · 实时网站和资源链接(online)

Live OD 网站 (10 pages)https://vip-roofing-brisbane-od-dev.pages.dev
BASELINE.md · 完整 baseline 文档https://vip-roofing-brisbane-dev.pages.dev/od-baseline/BASELINE.md
EXPERIMENT-ROADMAP.md · 7 phase 实验计划https://vip-roofing-brisbane-dev.pages.dev/od-baseline/EXPERIMENT-ROADMAP.md
LESSONS.md · 所有教训汇总https://vip-roofing-brisbane-dev.pages.dev/od-baseline/LESSONS.md
输入到 OD 的 seed 快照(精确还原 89 分输入)
seed/prompt.txt (12 KB · PRIMARY directive)https://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/prompt.txt
seed/brief-summary.md (11 KB)https://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/brief-summary.md
seed/DESIGN-HANDOFF.md (10 KB)https://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/DESIGN-HANDOFF.md
seed/facts.json (6 KB)https://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/facts.json
seed/site-architecture.json (sanitized)https://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/site-architecture.json
seed/references/family-DESIGN.mdhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/references/family-DESIGN.md
seed/references/BEST-PRACTICES.mdhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/references/BEST-PRACTICES.md
seed/references/niche-spec.mdhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/seed-snapshot/references/niche-spec.md
OD 输出快照(agent 真正生成的 10 页)
output/index.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/index.html
output/roof-replacements.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/roof-replacements.html
output/about.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/about.html
output/contact.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/contact.html
output/new-roofs.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/new-roofs.html
output/gutters.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/gutters.html
output/builders-commercial.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/builders-commercial.html
output/projects.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/projects.html
output/service-areas.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/service-areas.html
output/careers.htmlhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/output-snapshot/careers.html

8.6 · 实时 iframe 预览

10 页都在 live · home + roof-replacements + about

/index.html
/roof-replacements.html
/about.html

9Overnight 实验 · 11 variants 跨 4 phases (2026-05-18 night)

2h 47min · 11 OD runs + audits + judges · 测试 variance / image strategy / taste skill / cross-client scale

核心发现

  1. 89 baseline 是 lucky high · 同样 recipe 3 次跑出 83 / 76 / 63 · variance 20 分 · codex 是高度 non-deterministic 的 · 单次跑分不可靠 · 必须 median-of-3
  2. Image strategy 几乎不影响 score · I_real / I_ai / I_mixed 三者在 1 分之内 (69 / 69 / 68)
  3. Skill 选择很重要 · web-prototype (71) > taste-soft (67) > taste-editorial (63) · editorial 对 roofing 是错的
  4. Recipe 没 scale 到其他客户 · vip-roofing-brisbane 和 west-coast-roofing 都 0/100 · L1 fail · agent 可能在 mix vicwest 的 facts 到其他客户的 output · 需要明天 deep dive
  5. L3 持续失败 · brand/preview.html 缺 viewport · 但 composite hard-gate 只看 L1 · L3 不杀分

9.A · Phase A · Vicwest variance (同样 recipe 3 次跑)

variantvision · copy · composite
vicwest-run1vision 86.7 · copy 47/50 · 83/100
vicwest-run2vision 70.3 · copy 44/50 · 76/100
vicwest-run3vision 53.3 · copy 45/50 · 63/100
Variance20 分 spread · median 76

9.B · Phase B · Image strategy

variantvision · copy · composite
vicwest-I_real (customer photos)vision 59.3 · copy 47/50 · 69/100 ← winner (by 1pt)
vicwest-I_ai (gpt-image-1 generated)vision 60.3 · copy 49/50 · 69/100
vicwest-I_mixed (AI hero + customer rest)vision 64.3 · copy 43/50 · 68/100
结论image strategy 几乎不影响 score · 三者差距 1 分以内 · 个人审美选 I_real (real photos better for trust audit)

9.C · Phase C · Taste skill (locked image=I_real)

variantvision · copy · composite
vicwest · web-prototype (default)vision 68.7 · copy 48/50 · 71/100 ← winner
vicwest · web-prototype-taste-softvision 66.3 · copy 42/50 · 67/100
vicwest · web-prototype-taste-editorialvision 47 · copy 49/50 · 63/100 ← worst
结论web-prototype 是 roofing 的正确 skill · editorial 太 magazine-y · 视觉低分

9.D · Phase D · Cross-client scale (apply locked recipe)

clientL1 · L2 · L3 · vision · copy · composite
vicwest-roofing (Ballarat · rich data)✓ ✓ ✗ · vision 86.7 · copy 47/50 · 83/100
vip-roofing-brisbane (Brisbane · thinner data)✗ ✗ ✗ · vision 41.3 · copy 13/50 · 0/100
west-coast-roofing (Perth · thinner data)✗ ✗ ✓ · vision 50.3 · copy 16/50 · 0/100
结论0/2 scale · recipe 不能直接复用到不同客户 · copy judge 给 13/50 · 16/50 说明 agent 可能 mix 了 vicwest 的 facts

9.E · Locked recipe (such as it is)

imageI_real (real customer photos · GMB + owned website)
skillweb-prototype (OD default · NOT taste variants)
briefA2_compact (10 KB sanitized) · meta-fields stripped
prompt200-line production-grade · anti-meta-copy + font loading + hero-variant-per-page rules
但是median composite ~76 · variance ±10 · 没达到 85 target

9.F · 明天应该做什么

  1. Median-of-3 scoring · 每个 variant 跑 3 次 · 取中位数 · 不能再相信单次跑分
  2. Investigate cross-client facts contamination · 看 vip / west-coast 的 actual rendered HTML · agent 是不是真的写了 vicwest 的 phone/ABN? 还是只是 audit 标签错?
  3. Copy judge prompt 修正 · 我把 vicwest 的 baseline facts 写死在 judge prompt 里了 · 跨客户用同一 judge 不公平 · 需要 per-client judge baseline
  4. Fix L3 brand/preview.html · pl:build-od-seed 应该在写 seed 时就排除 brand/preview.html · 或者 audit 时 filter 掉
  5. Vision drops a lot · run1 vision 86.7 · run3 vision 53.3 · 设计语言到底是不是稳定的? 可能是 agent 选了不同的 hero photo 或者不同 section 顺序导致

9.G · 实时网站和文档链接

Master 实验目录experiments/od-master-2026-05-18T14-15-19-703/
Master summaryhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/OVERNIGHT-MASTER.md
Master log/tmp/od-master.log (local)
Locked recipe summaryhttps://vip-roofing-brisbane-dev.pages.dev/od-baseline/BASELINE.md (still pointing at 89 lucky high · need update)