Single Blog Title

This is a single blog caption

NCUC’s Substantive Comments on the IRT Recommendation

Noncommercial Users Constituency Submits its COMMENTS ON SUBSTANTIVE RECOMMENDATIONS IN THE IRT FINAL REPORT.
A CALL FOR RIGHTS OF REGISTRANTS TO BE PROTECTED, FOR .TRADEMARK LAWYER ABUSE. TO BE RECOGNIZED,
AND FOR IRT/IPC/TRADEMARK PROTECTION PROPOSALS TO BE DISMISSED OR REVISED TO FIT WITHIN THE
SCOPE AND MISSION OF ICANN AND THE SCOPE AND LIMITS OF TRADEMARK LAW (Filed with ICANN on July 6, 2009-http://forum.icann.org/lists/irt-final-report/)

These are the comments of ICANN.S Non-Commercial User Constituency (NCUC),
a group which dates back to ICANN.s founding and has actively and fully participated in all policy-making proceedings at ICANN involving domain names and domain name disputes before now.

I. A Few Opening Thoughts .

Sydney IRT and Public Consultations

ICANN has now heard loudly and clearly from the ICANN community. Throughout the microphones of the Sydney meetings, in forums loud and small, the opinions echoed: the IRT Report is not reasonable, is not balanced, is not fair and is not just. In short, the IRT Report is not a workable solution.

In the Sydney IRT Consultation, the ceiling rang with a significant number of heartfelt and deeply founded, concerns of noncommercial registrants, individual registrants, commercial registrants, registrars and those speaking for Internet users. Comment after comment from NCUC, ALAC, Registrars and even IP attorneys speaking in opposition to the IRT were heard (with many more deep concerns expressed in the hallways).

All 3 straw polls, conducted by Bruce Tonkin, on the major pillars of the IRT Report in a main IRT presentation (Wed. afternoon) showed that not a single major pillar of the report had the support of even a bare majority of the community in the room. In all 3 polls, there were more hands raised in opposition to the ITR Report proposals than in favor.

To the extent that the IRT Team was called upon to create something reasonable and balanced, it has not done so. Its work should conclude without aftermath. To the extent that its work continues in some form, then this work must be done in a manner reflecting the diversity of the GNSO and ICANN, and with an expertise and concern for the abuse of domain name registrants as well as the policing of trademarks. Such a new group must fairly and in a balanced manner represent all constituencies in the GNSO and operate in the traditional ICANN open and transparent manner. (Please see the NCUC Procedural Comments on the IRT Final Report, separately submitted.)

Our Goals
These Substantive Comments are devoted to NCUC.s severe, substantive, legal and judicial concerns with the proposals of the IRT Report. We will share how the substantive IRT recommendations take ICANN far afield of its technical scope and mission, create substantive new trademark rights (beyond existing law), gut existing safeguards and fair procedures for domain name registrants in the Uniform Dispute Resolution Policy (.UDRP.), and create an unbounded situation for abuse by trademark lawyers and those representing trademark owners.
We address our significant concerns with all major aspects of the IRT Report below.

Two Opening Observations

A. Domain name registrants are not bad. To read the characterizations of the IRT Report, and the comments of the committee, domain name registrants are inherently bad. We are all guilty until proven innocent. We merit no fair or actual notice of trademark infringement allegations. We are not entitled to just or fair time to respond. Following legal due process safeguards is just too expensive and time consuming for brand owners. In fact, as so many pointed out in Sydney, domain name registrants are Internet users. We are amazingly diverse, large and small, in developing countries and developed ones. We are noncommercial organizations, commercial companies small and large, individuals . registrants include my parents and your children, everyone.s civic organizations and parenting groups, our Scouting associations and other recreation and hobbies, and human rights groups around the world.

We want domain names in our languages and scripts. We have tens of millions of ideas to share, products and services to market and discuss, and political ideas to convey . and we register domain names to do so. Domain name registrants (Internet users) pay 100% for ICANN.s operation. It is our billions of domain name registration fees which pay the registrars and the registries, who in turn, fund ICANN. Domain name registrants everywhere are the broad base of the pyramid atop which ICANN rests. NCUC, along with so many others in Sydney, proclaimed the right of all domain name registrants to be treated with fairness and equity, justice and process. We are entitled to respect in the ICANN relationship and fundamental fairness before a mere allegation of trademark infringement results in the loss or suspension of our domain name registration and the underlying speech (noncommercial/ commercial) it conveys.

B. Cybersquatting has not been proven to be on the rise.

Throughout the IRT Report and Sydney, it was proclaimed that cybersquatting is on the rise because WIPO UDRP filings were up by 7% in 2009. But on investigation, confrontation with facts, and tough questioning from the floor, it was shown that the facts don.t correspond to the conclusion.

In 2008, domain name registrations were up by 16 percent. Yet, WIPO UDRP filings were up by only 7% — a percentage-wise reduction overall in WIPO UDRP filings. A number of legitimate reasons were put forward in Sydney for the slight rise of WIPO UDRP filings (about 200 in 2008), including:
1. Forum shopping . trademark complainants are choosing WIPO because its decisions favor trademark owners;
2. Expansion of UDRP scope . trademark complainants are choosing WIPO because its panelists are allowing not policing the traditional boundaries of the UDRP as closely as other forums;
3. A huge number of new domain name registrations! In anything, the many decisions in favor of Respondents (Registrants) in the 2008 WIPO UDRP decisions show that the UDRP system works . it saves important domain names and the speech and communication for which they are used.

II. Detailed Commentary on the Substantive Issues of the IRT Final
Report and its Proposals

.The IRT recommendation should not usurp or replace
the existence of legal institutions and systems
that are intended to establish the scope of legal rights
(e.g., existing laws and national courts).
IRT Final Report, p. 12.
The recommendation should protect the existing rights of trademark owners,
but neither expand those rights nor create additional legal rights.
IRT Final Report, p. 11.

1. Globally Protected Marks List Summary: The Globally Protected Marks List (.GPML.) is an exceptionally weak part of the IRT Report. It is not grounded in law or practice. It creates rights to a string of letters, unbounded by goods, services, or use, in a way far beyond trademark law. The proposal would limit the right of individuals, noncommercial organizations and Internet entrepreneurs to use basic dictionary words in the manner to which they have always been entitled by law, by fair use and by rights of all to language.

Analysis and Comment

A. The Globally Protected Marks List . the GPML database- is a matter well beyond ICANN’s scope and its core competence. In fact, the determination of famous marks is a matter of great dispute among trademark lawyers and scholars, and one that takes considerable time for courts.

B. The GPML is a list far larger than even famous international brands. The GPML, as drafted, may well include hundreds of esoteric scientific and technical terms which, while in international use, may be completely unknown, unrecognized and unused outside their limited technical areas. To grant such words elevated status in all new gTLDs, at top and second levels, defies reason and goes far afield of existing trademark rights.

C. The scope of the GPML protection defies the limits of trademark law. The IRT Team proposes that GPML marks will be blocked for registration in all new gTLDs . even those intended for noncommercial use, criticism or journalism, and for the myriad of other ways in which law allows even famous trademarks to be used by others under principles of free speech and freedom of expression, fair use and noncommercial use. The IRT Team ignores the simple fact that trademark rights do not regulate noncommercial speech and it attempts to apply commercial rules to all noncommercial speech.

D. The GPML pushes ICANN, a technical body, into the cutting edge of the most difficult trademark law evaluations. Even national courts are wrestling with these issues . with many different results. A Spanish court protected a local .NIKE. brand owner, over the internationally known brand; the Canadian Supreme Court found that even famous marks are not necessarily entitled to absolute or extensive protection — even over other commercial marks. (See, e.g., Canadian Supreme Court, Mattel, Inc. v 3894207 Canada, Inc. 2006 SCC 22; Veuve Cliquot Ponsardin v. Boutiques Cliquot Ltee, 2006 SCC 23.) This is not the work of ICANN.

E. The GPML extends the protection of trademark words into noncommercial or fair use . far beyond where trademark law allows such protection to go. Such overbroad trademark restrictions will inevitably stifle the free flow of information and chill freedom of expression on the Internet. It will also have a detrimental effect upon innovation and use of domain names by entrepreneurs and individual users.

F. The GPML extends protection of trademarked words into completely unrelated lines of goods or services, which traditionally remain protected for use by others, even under trademark law (e.g., the use of one.s last name in a professional capacity and as a company name, such as McDonalds, C.P.A. or McDonalds Accounting).

G. The GPML standard, as applied to top level domains, contradicts trademark law itself. The implications of a .confusingly similar. analysis boggle the mind. A .goggle. GPML listing might be used to block a future .Google. gTLD application; a .lego. GPML listing might block a future .logo. gTLD application (a children.s programming language created by MIT in the 1960s).

H. The NCUC, as final drafter of the UDRP notes that the IRT Report uses UDRP Paragraph 4(c) in a manner which it was never drafted nor intended. and in a way completely outside the bounds of law and language. UDRP Paragraph 4(c), rights of registrants, was drafted as a defense to cybersquatting. It was never intended to incorporate all rights of a new registrant to a domain name . nor to require registrants to justify their right to use ordinary words or common names. We may name our children any name we like, without regard to .existing rights;. we may pick the names of our new products without any right to the terms we choose (other than avoiding clear confusion). Benjamin Franklin named his almanac .Poor Richard.s Almanac. without any existing right or interest in .Richard.. The IRT Report turns this notion of rights on its head and shifts the burden of proof onto the registrant.

NCUC supports the right of all Internet users, now and in the future, to use all words . the basic building blocks of language- in any manner not proscribed by law and without any need to prove some existential right. Apple Computer, Inc. did not have to provide such a right, Google did not have to prove a right . neither must those individuals, noncommercial organizations and entrepreneurs who follow.

I. The attempt to create the GPML has already revealed numerous substantial challenges, opposition, lack of definition and complete lack of agreement. The GMPL.s development, should it be allowed to go forward, will delay, rather than speed, the implementation of new gTLDs.

Overall, we recognize the problem the IRT/IPC Team is grappling with. At some future point, when legitimate criteria are in place or any legitimate body has come to a determination as to which marks should be entitled global protection, ICANN should consider appropriate ways to incorporate the list into registration practices. Until then, the creation of such a list by ICANN is completely outside the scope and mission of the organization, as well as outside its expertise. To do so will delay the process of gTLDs forever.

2. Uniform Rapid Suspension System Policy (URSP) Summary: For those who have participated so long and so well in the GNSO process, the supplanting of the UDRP by the URSP comes as a complete surprise. To the extent that the UDRP needs reform, then let.s sit down and evaluate it together with the entire GNSO and ICANN community.

As drafted, the proposed USRP supplants the UDRP with its broad access by nearly every trademark owner to the USRP instead of the UDRP. The URSP, further, guts the UDRP.s protection of domain name registrants by removing reasonable notice provisions and the basic time necessary to prepare a response by registrants. It further opens the domain name dispute policy to gaming, bad acts and abuse by trademark attorneys.

Should the IRT/IPC Team have a much narrower set of particularly egregious bad acts it would like to share for discussion, the NCUC is willing to listen and discuss those truly bad acts.

Analysis and Comment

A. Criticism of and opposition to the URSP was nearly universal in Sydney. Noncommercial users, individuals, commercial users and their representatives rose to speak separately and together against the URSP as a proposed system that provides rights for only one side . the trademark owner . and virtually no rights for domain name registrants.

B. In its Joint Statement on the IRT Report from members of ALAC and NCUC, the two groups jointly presented the following severe critique of the URSP:
.We have serious issues with the Uniform Rapid Suspension Service (URS) as proposed. For instance, the URS mechanism subverts conventional UDRP practice as it gives entirely insufficient time for notice to the registrant of the pending dispute. Thus, the registrant is unfairly limited in his/her right of response and the process is missing the fundamental principle of due process..

C. After 10 years in operation, we all have concerns with the UDRP and aspects we would seek to change. If the IRT/IPC has problems with the UDRP, then let.s investigate them together. To start the discussion, the NCUC would like to know:

1. When was it decided that the UDRP is insufficient to deal with cybersquatting?
2. Which parts of the UDRP are problematic?

D. Domain name Registrants are entitled to fair notice and a fair time for response.

a. Registrants need actual notice. NCUC representatives wrote into the UDRP the broadest method of notice to work towards .actual notice. . in which the registrant actually knows a proceeding is taking place against her/his domain name. The URSP has no such goal.
b. Registrants need adequate time to respond. As we discussed in Sydney, trademark owners have all the opportunity here: as much time as they choose to prepare a complaint, and an open calendar for submission. Gaming is invited . with complaints likely to be submitted in December or August and decisions made before a vacationing Registrant even knows the complaint was filed.
c. As the URSP provides insufficient notice and time, no Registrant or Attorney will be able to provide a proper response — critical speech will be lost.

E. The URSP operates on the same premise for which the UDRP was created .- to create a cheap and fast system of resolving trademark conflicts online. Ten years ago trademark owners danced in the aisles of the ICANN meeting because the UDRP was far cheaper and faster than actions in local courts. We see nothing in the IRT Report to indicate the UDRP is not working. We see much in our NCUC evaluation of UDRP cases to illustrate the opposite.that the UDRP actions in favor of registrants are protecting important noncommercial, individual and commercial domain name use and speech online. We further note that UDRP decisions show that trademark owners seek to use the UDRP to silence criticism, stop competition, control discussion, and seek access to words and domain names to which they are not entitled by law. While the UDRP provides some balance for the potential of abuse on both sides (trademark complainants and registrants), such balances is completely lacking from the URSP.

F. .The URS is not intended for use in any questionable proceedings, but only clear cases of trademark abuse.. The IRT recommendation suggests that the URS is necessary to fight cybersquatting. Around 10 years ago, the exact, same issue justified the creation of the UDRP. “Except in cases involving .abusive registrations. made with bad faith intent to profit commercially from others. trademarks (e.g. cybersquatting and cyberpiracy) the adopted policy leaves the resolution of disputes to the courts and calls for registrars not to disturb a registration until those courts decide. The adopted policy establishes a streamlined, inexpensive administrative dispute-resolution procedure intended only for the relatively narrow class of cases of “abusive registrations”. Second Staff Report on Implementation Documents for the Uniform Dispute Resolution Policy (October 24, 1999), available at
staff-report-24oct99.htm). What is really the reason behind the creation of the URSP? What is on the mind of the IRT Team? Is this the way of the IRT Team to tell us that ten years of UDRP case law have been unsuccessful? But, the report itself states that the UDRP has been successful: .The UDRP has unquestionably been an important and successful mediation tool for trademark owners and domain name registrants alike.. (IRT Report, p. 25). The justifications behind the
URSP are not convincing enough and seek to address concerns of no substance or reasoning. And some members of the IPR community are already calling for URSP to apply to existing domain names and to replace the UDRP.

G. .Trademark Lawyer Abuse. must be taken into account. Everyday, the NCUC and its members see the flip side of cybersquatting — .Trademark Lawyer Abuse.. There are bad acts, unsubstantiated threats, overbroad claims and misuse of the UDRP process, cease and desist letter and other methods of threatening domain names. See the website www.chillingeffects.org for thousands of examples of such abuses documented by Internet users. Often trademark lawyers use the UDRP to manipulate the system, take advantage of their Goliath v. David position. They seek to use the UDRP to remove domain names for reasons that have nothing to do with cybersquatting . but instead to remove competition, to take down criticism, or merely to expand a DN portfolio.
The URSP proposals fail to take into account the bad faith, gaming, misuse, misinterpretation and abuse of trademark lawyers. Until the proposals are balanced to include concerns from both sides, they cannot be considered for implementation.

H. An Invitation for Future Discussion

The NCUC issues the following invitation: if there are extraordinary cases of domain name registration abuse which merit consideration for immediate revocation, we urge the IRT Team to bring them forward. We are willing to consider the possibility of extraordinarily and egregious cases, and appropriate action to address such legitimate concerns. Such circumstances exist in other settings, and might possibly exist here. But the scope of the net the URSP catches cannot include legitimate domain name registrants, good actors . it cannot result in the loss of legitimate domain names and the critical speech and free flow of information for which they are used.

3. Post-Delegation Dispute Mechanism as Revised by the IRT
NCUC argues that the IRT Team.s foray into this area fall far outside the scope of the IRT Team.s mandate, which is limited to only commenting on issues of trademark law. The IRT Team.s recommendations about ICANN.s contractual clauses with Registries/Registrars should not be considered.

4. WHOIS
In proposing a thick Whois for all new gTLDs, the IRT Team does not provide any explanation as to why such a massive amount of data should be allocated to only one registry for new gTLDs.
Like trademark law, privacy law is territorial in nature. Different countries have different laws, and many countries protect the personal data of their citizens. Some countries, including the United States, protect the right of anonymous political speech as a democratic principle. Registrars are more likely to know the privacy and data protection laws which protect their registrants, and the practices of their regions.
As NCUC and ALAC together presented in their Joint Statement on the IRT Report: We are opposed to the IRT.s proposal policy recommendation to move to a Thick Whois without doing a privacy analysis, nor taking into account national laws nor International Privacy Standards, such as 1980 OECD Guidelines, the Privacy Convention 108 and the EU Data Protection Directive.

5. IP Clearinghouse

Summary: The IP Clearinghouse takes ICANN far outside its scope and technical mission. It is an intellectual property rights structure that has no barrier to creation in the private sector, and is consistent with the types of private sector services, including monitoring and alert, now being offered. Further, the creation of such a superstructure of ICANN, a single monolith, will attract such lobbying from brand owners that the rollout of new gTLDs may be further delayed for years!

To the extent that private IP Clearinghouses emerge in the various regions of the world to support the various languages of the world, and practices of the various national trademark laws, we agree. Such private structures, or one supported by national Trademark Offices, are consistent with the territorial bounds of trademark law, the diversity of trademark rights and practices and the separate bounds and limits on trademark rights under national laws.

Analysis and Comment
NCUC understands from its consultations with IRT attorneys and potential new gTLD applicants that the IP Clearinghouse concept is designed to prevent redundancy and create efficiencies. It may come as a surprise that we have no objection to the general concept . we all support efficiencies, provided they are bounded by the traditional limits of trademark law and provide the new gTLD Registries and Registries with the necessary data to make informed and accurate decisions regarding whether an asserted trademark right truly falls with the scope of a new gTLD.

NCUC further submits that . in the strongest terms . we contest and discourage ICANN from creating the proposed IP Clearinghouse as a single massive monolithic database of ambiguous trademark rights. For every reason imaginable, including ICANN.s technical mission and specific areas of technical expertise, such an entry into the intellectual property rights legal regimes would derail ICANN.s mission and dramatically change the scope, nature and faces of the ICANN community. Such an IP Clearinghouse structure could completely derail ICANN.

In particular, NCUC notes:
A. Brand owners have no consensus on what goes into the database. Throughout Sydney, we heard that registered marks, and unregistered marks, national marks and state marks, intent to use and those in use, and even completely unrelated trademark rights may be entered. Let the trademark owners create individual, regional IP Clearinghouse or work with the IP Clearinghouses to develop policies that most accurately reflect the rights and territorial limitations of trademark law in their jurisdictions.

B. ICANN has no scope nor authority to create a single, monolithic, undefined superstructure to adjudicate legal rights. The creation of such a legal regime falls completely outside the function of ICANN as set out in the foundational White Paper.

C. Even if ICANN had the authority, which it does not, it should not want to create a single, monolithic IP Clearinghouse because such a process will change the nature of the community ICANN serves. The jockeying for position in the IP Clearinghouse, the hope of extending its reach to even the dimmest trademark and other intellectual property right, will lead to a run on ICANN by trademark owners. This discussion, debate, and jockeying for rules of the IP Clearinghouse should happen outside the bounds of ICANN.

D. The various national Trademark Offices are in a much better position to lead these discussions than ICANN. Trademarks are territorial by nature. They are bounded by the scope of their use, and by other intricacies of local law, e.g., the law that determines when a well-known, or even famous mark, has become generic (e.g., elevator in American and hoover in English). It is the national Trademark Offices which can best guide this discussion. It is the national Trademark Offices which can best work together on a regional basis to support (or even help run) regional IP Clearinghouses. Further, virtually all national Trademark Offices enter their registrations into databases. While only some provide access to these databases openly to the public online, they could make access easily available to private IP Clearinghouse in which they had a hand in creating and/or running and/or overseeing. Further, the national Trademark Offices are also the most informed about the limits of trademark law, their national law protections for freedom of expression and fair use, and can seek to incorporate these balances and protections of their laws into the scope and framework of the IP Clearinghouses.

E. Should such regional, private (and/or Trademark Office-informed) IP Clearinghouses be created, NCUC strongly recommends the clear and unmitigated addition of information necessary for the new gTLD Registries and Registrars to operate:

a. the international class(es) of goods and services in which the goods are registered; b. the complete and specific description of goods and services
which all trademark applicants must provide as a condition of submitting a trademark application; c. the entity granting the trademark registration (e.g., country, region) .

F. To serve IDNs, the private, regional IP Clearinghouses are in the best position to meet the needs of trademark owners working in their own languages and scripts.

G. NCUC agrees that the use of the private IP Clearinghouse should be optional. Registrars and registries should work with the IP Clearinghouses appropriate to their languages, regions, scripts and community.

H. The market has already created IP Clearinghouse-type databases for the sunrise periods that have passed . the market will inevitably meet the need for new private, regional IP Clearinghouses, especially if ICANN makes clear the need for new gTLDs.

In conclusion, the NCUC appreciates the opportunity to submit these Substantive Comments, and its separate Procedural Comments, in this proceeding. We also appreciated our meeting with members of the IRT
Team. The reception that we received in that meeting . to our concerns about Trademark Lawyer Abuse, to our concerns for fairness to Domain Name Registrants . showed us that, had the IRT Team held equal numbers of Registrant and Trademark Owner attorneys, our comments today would have been different and this one-sided report much more balanced.
Overall, despite its flaws, conceptually the UDRP is still a system that works .and one which, in light of the anticipated traffic in the DNS, can stretch its scope to incorporate novel issues of abuse. Let.s move as the entire GNSO and ICANN community to a substantive UDRP reform. Together we can improve it fairly. for all parties.

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.2";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 100vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectHTML(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));