From 93c470af483354a7f44e7e918f2ef2187db7e054 Mon Sep 17 00:00:00 2001 From: gumob Date: Mon, 26 Aug 2024 09:37:22 +0900 Subject: [PATCH 1/3] docs(README.md): update dependencies requirements for TLDExtractSwift to support macOS, iOS, tvOS, watchOS, visionOS, and Swift 5 Update the Cartfile and Podfile dependencies for TLDExtractSwift to include the latest version (3.0) for all platforms and Swift 5. Do not forget to include Punycode.framework. --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index e99bc98..16fcbce 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,12 @@ Domain names are the unique, human-readable Internet addresses of websites. They ## Requirements -- iOS 9.3 or later -- macOS 10.12 or later -- tvOS 10.2 or later -- Swift 4.2 or later -- Python 2.7 or Python 3 +- macOS 10.13 or later +- iOS 12.0 or later +- tvOS 12.0 or later +- watchOS 4.0 or later +- visionOS 1.0 or later +- Swift 5.0 or later ## Installation @@ -37,9 +38,9 @@ Domain names are the unique, human-readable Internet addresses of websites. They Add the following to your `Cartfile` and follow [these instructions](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). ``` -github "gumob/TLDExtractSwift" # Latest (Swift 5.0) -github "gumob/TLDExtractSwift" ~> 2.0 # Swift 5.0 -github "gumob/TLDExtractSwift" ~> 1.0 # Swift 4.2 +github "gumob/TLDExtractSwift" ~> 3.0 # macOS, iOS, tvOS, watchOS, visionOS, and Swift 5 +github "gumob/TLDExtractSwift" ~> 2.0 # macOS, iOS, tvOS, and Swift 5 +github "gumob/TLDExtractSwift" ~> 1.0 # macOS, iOS, tvOS, and Swift 4 ``` Do not forget to include Punycode.framework. Otherwise it will fail to build the application.
@@ -54,9 +55,9 @@ To integrate TLDExtract into your project, add the following to your `Podfile`. platform :ios, '9.3' use_frameworks! -pod 'TLDExtract' # Latest (Swift 5.0) -pod 'TLDExtract', '~> 2.0' # Swift 5.0 -pod 'TLDExtract', '~> 1.0' # Swift 4.2 +pod 'TLDExtract', '~> 3.0' # macOS, iOS, tvOS, watchOS, visionOS, and Swift 5.0 +pod 'TLDExtract', '~> 2.0' # macOS, iOS, tvOS, and Swift 5.0 +pod 'TLDExtract', '~> 1.0' # macOS, iOS, tvOS, and Swift 4.2 ``` ## Usage From a6c18f2bd03294bbf30cf15ac1bc02d8f8abf8ba Mon Sep 17 00:00:00 2001 From: gumob Date: Mon, 26 Aug 2024 10:27:04 +0900 Subject: [PATCH 2/3] docs: Update README.md for version 3.0.0 It seems like you are providing instructions on how to integrate the TLDExtract library into various projects using different build systems such as Swift Package Manager, Carthage, CocoaPods, and manually. For Swift Package Manager, you have provided two sets of dependencies for macOS, iOS, tvOS, and watchOS/visionOS with Swift 5 and Swift 4 respectively. The first set is for the latest version (3.0.x) and the second one is for the previous major version (2.1.1). For Carthage, you have provided a `Cartfile` snippet that includes TLDExtractSwift for macOS, iOS, tvOS, watchOS, visionOS, and Swift 5, 4, and 3 respectively. You also mentioned the need to include Punycode.framework. For CocoaPods, you have provided a `Podfile` snippet that includes TLDExtract for macOS, iOS, tvOS, watchOS, visionOS, and Swift 5, 4, and 3 respectively. Lastly, you have provided usage examples of initializing the TLDExtract object in Swift. It's great to see clear instructions on how to integrate a library into different projects using various build systems. Keep up the good work! If you need any help or have any questions, feel free to ask. --- README.md | 88 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 68 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 16fcbce..2579c7e 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg)](https://github.com/gumob/TLDExtractSwift) -[![Version](http://img.shields.io/cocoapods/v/TLDExtract.svg)](http://cocoadocs.org/docsets/TLDExtract) -[![Platform](http://img.shields.io/cocoapods/p/TLDExtract.svg)](http://cocoadocs.org/docsets/TLDExtract) -[![Build Status](https://travis-ci.com/gumob/TLDExtractSwift.svg?branch=master)](https://travis-ci.com/gumob/TLDExtractSwift) +[![Swift Package Manager compatible](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange)](https://github.com/gumob/TLDExtractSwift) +[![Cocoapods Version](http://img.shields.io/cocoapods/v/TLDExtractSwift.svg)](http://cocoadocs.org/docsets/TLDExtract) +[![Cocoapods Platform](http://img.shields.io/cocoapods/p/TLDExtractSwift.svg)](http://cocoadocs.org/docsets/TLDExtract) +[![Build](https://github.com/gumob/TLDExtractSwift/actions/workflows/main.yml/badge.svg)](https://github.com/gumob/TLDExtractSwift/actions/workflows/main.yml) [![codecov](https://codecov.io/gh/gumob/TLDExtractSwift/branch/master/graph/badge.svg)](https://codecov.io/gh/gumob/TLDExtractSwift) -![Language](https://img.shields.io/badge/Language-Swift%204.2-orange.svg) +![Language](https://img.shields.io/badge/Language-Swift%205.0-orange.svg) ![Packagist](https://img.shields.io/packagist/l/doctrine/orm.svg) # TLDExtract @@ -15,6 +15,25 @@ Domain names are the unique, human-readable Internet addresses of websites. They drawing +## Changes in 3.0.0 + +### Breaking changes + +- ‼️ Library name changed from ~~`TLDExtract`~~ to **`TLDExtractSwift`** to resolve namespace conflicts. For more details, please check the issue ([apple/swift#56573](https://github.com/apple/swift/issues/56573)). + + Please don't forget to update your source code. + + ```diff + - import TLDExtract + + import TLDExtractSwift + ``` + +### Other changes +- Dropped support for Swift 4. +- Added watchOS and visionOS to supported platforms. +- Changed supported versions for macOS, iOS, and tvOS to match Xcode 15.4. + + ## Feature - Extract root domain, top level domain, second level domain, subdomain from url and hostname @@ -33,15 +52,40 @@ Domain names are the unique, human-readable Internet addresses of websites. They ## Installation +### Swift Package Manager + +Add the following to your `Package.swift` file. + +- macOS, iOS, tvOS, watchOS, visionOS, and Swift 5 + ```swift + dependencies: [ + .package(url: "https://github.com/gumob/TLDExtractSwift.git", .upToNextMajor(from: "3.0.0")) + ] + ``` + +- macOS, iOS, tvOS, and Swift 5 + ```swift + dependencies: [ + .package(url: "https://github.com/gumob/TLDExtractSwift.git", .upToNextMajor(from: "2.1.1")) + ] + ``` + ### Carthage Add the following to your `Cartfile` and follow [these instructions](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). -``` -github "gumob/TLDExtractSwift" ~> 3.0 # macOS, iOS, tvOS, watchOS, visionOS, and Swift 5 -github "gumob/TLDExtractSwift" ~> 2.0 # macOS, iOS, tvOS, and Swift 5 -github "gumob/TLDExtractSwift" ~> 1.0 # macOS, iOS, tvOS, and Swift 4 -``` +- macOS, iOS, tvOS, watchOS, visionOS, and Swift 5 + ``` + github "gumob/TLDExtractSwift" ~> 3.0 + ``` +- macOS, iOS, tvOS, and Swift 5 + ``` + github "gumob/TLDExtractSwift" ~> 2.0 + ``` +- macOS, iOS, tvOS, and Swift 4 + ``` + github "gumob/TLDExtractSwift" ~> 1.0 + ``` Do not forget to include Punycode.framework. Otherwise it will fail to build the application.
@@ -51,14 +95,18 @@ Do not forget to include Punycode.framework. Otherwise it will fail to build the To integrate TLDExtract into your project, add the following to your `Podfile`. -```ruby -platform :ios, '9.3' -use_frameworks! - -pod 'TLDExtract', '~> 3.0' # macOS, iOS, tvOS, watchOS, visionOS, and Swift 5.0 -pod 'TLDExtract', '~> 2.0' # macOS, iOS, tvOS, and Swift 5.0 -pod 'TLDExtract', '~> 1.0' # macOS, iOS, tvOS, and Swift 4.2 -``` +- macOS, iOS, tvOS, watchOS, visionOS, and Swift 5.0 + ```ruby + pod 'TLDExtractSwift', '~> 3.0' + ``` +- macOS, iOS, tvOS, and Swift 5.0 + ```ruby + pod 'TLDExtract', '~> 2.0' + ``` +- macOS, iOS, tvOS, and Swift 4.2 + ```ruby + pod 'TLDExtract', '~> 1.0' + ``` ## Usage @@ -66,14 +114,14 @@ pod 'TLDExtract', '~> 1.0' # macOS, iOS, tvOS, and Swift 4.2 Basic initialization code. Exceptions will not be raised unless [the Public Suffix List on the server](https://publicsuffix.org/list/public_suffix_list.dat) is broken. ```swift -import TLDExtract +import TLDExtractSwift let extractor = try! TLDExtract() ``` A safer initialization code to avoid errors by using the frozen Public Suffix List:
```swift -import TLDExtract +import TLDExtractSwift let extractor = try! TLDExtract(useFrozenData: true) ``` From b78de1483cbcd4814c8a41a842b16fee64ce6296 Mon Sep 17 00:00:00 2001 From: gumob Date: Mon, 26 Aug 2024 10:40:32 +0900 Subject: [PATCH 3/3] docs: Replace image --- Metadata/domain-diagram.svg | 42 ----------------------------------- Metadata/domain-diagram.webp | Bin 0 -> 10834 bytes README.md | 2 +- 3 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 Metadata/domain-diagram.svg create mode 100644 Metadata/domain-diagram.webp diff --git a/Metadata/domain-diagram.svg b/Metadata/domain-diagram.svg deleted file mode 100644 index 726a4bd..0000000 --- a/Metadata/domain-diagram.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - - domain-diagram - Created with Sketch. - - - - - https - :// - www - . - github - . - com - - - - Subdomain - - - - - Protocol - - - - Top-Level Domain - - - Second-Level Domain - - - - - Root Domain - - - - - \ No newline at end of file diff --git a/Metadata/domain-diagram.webp b/Metadata/domain-diagram.webp new file mode 100644 index 0000000000000000000000000000000000000000..fe59c72e30b7306cb1535957f60a20839e478383 GIT binary patch literal 10834 zcmZX4byytDv+e@HEkMwqi@Up9AUMHYgD-B2C%9X1cXxLJL4rF8?u3P4i|g6%`<;8w zJiC*jiB$9j@{()+(F;c?$c{+ zp5^LI8!3h^Qv9&`l${{AJTV*<0$lI}j*w>wGcp<07gL@7uMDz2EzG!7SH=$Rg%XtR zC^;d-O-l~}%PYctGy~blmQX6xqi;^~!4WSS=F~qEX*%+HvqI&<{#0tFaC@*vHnx<3 zu3q9BC;t5z=xziKFBSHh^sU+4xb=jVoTyd0qU$9&%xnAKcD8ah`G@o6f>v8Gk&|dL zJbQERVb>s~*X?=`%}1sUiW>V)&)eQ|F1Xg1r=r(U@yqxpYM6M4e<^zX^S{LZwf*;y z|5xDd5{s}LVUo{+2QoT;rI=17S`=_iHwr9~CtwiKhj0o2*VXYhmOH+~tcw%b)FxqL zB3aW7ts_qJy5)qMvt@=AiuaHS-JXXjk5ab%s+zE@2eR4)TL0@7V?TPju1{%73oh1> zuazeVJr8VNrL~_HE;iX*m|9iwU|NXqpz^b%HKef1f%>WKBTZe5<68oe6D1=x<>lzJ zk<*1CFTsfO&4hXtM%Lh-xZjwAT=+wurxrpNj0Zy@@l!Cno}7U2^nzBl`QLL43eA8s z+X*X^xHJtNYy{iU}byU?Q% zqUpxhb&VTEL(W9bc&waaKqjS3;PVDEsA`%1TJD|ud}h>!kB%5q%Qx@qPp|TmtpwCd z_ohV!1MhvVpI0(EuZY~l{Ttkl&+GHe9*vzQC$Fge60Fgfj;kCKTMYM8euch5mRAYN z33$mGSJbD-GG2X-?e&=#Y?rJL*va2a-o+)-+9ex#2Qoi{8}gSYg)$$7F->qX+n!yC znmDIJa2&X{8K|yhG8Ci?Ga}=KwCJP9ZQ?#5KJ&C=QFR=BnrcjXAu4hJDG8UEZ(_QI@%B?uVW7QaPSa6U~0SZJ}we1@SJ+vpy99L6tzfpEHyJi z4&Jl7ImF=LxZrPZ94eKjUL*&vGk~&9SF5gx!TYHECMfiKa!f`yO_<8{xdm50u0{rI z2ztj>t~`i}L|g97?2**K8=a%N;dmSNQY$=M&EjGcTvqYeXcioPtlNA2sj#5J@g+%! zOnwrRvxTNhS@mLnW~jb*?5O4_AElx*&jf3=XIG(j)f(CeYAuVKUfK>W33p&97hxKq z8cqiABJsvD69gCzCm0GUpjMVP=Nif$_3`Ay2%b*?*9NmY*8f^iN^5ZwrfX+q=uBl? z-vndauir%aS*cwhR9yXe(^AU)$zzLer96#zN1GA!E2pUQSaQ&Omn-$XwIWKH(S)P= zX+9A#4|NMw6}HAPbVQHhPb?VCt!JoWwzEDoiX#m|`mT48RGF-1+rUDkW!TNZ?<=Fw zYee3*)6`S+s^~pt~t5saBAGO5hGpt^|-PZu6?#oie4I|OO% z1D5$G!W&Q1X#Xe5qV->r{8JihTqufaAsw2B`R5Jh?NgWrcS}T0H5WvB9dKzwE@ELL zf>37MSF>atm3xqK?ZdF|F9BjQD>(;`FYLe6H9F|_Z#Uqwzy(kI0TTpb<4$`%;$?L2 z#4PYWST3&FU)+lc}`n<-1vd^ALLDJ zerw}jtU)mPyIY18N$p8~U4S+Rj~oJyOI z2zR273cXa)V?mn1%Y{lyO=4dZqd+f)9Nudq8k^n){q{;rpN-}%J2b6L?k>~8iJwt7 zNp>4}$<1}Qf?h(F1)!V-m^RSXl`er1 zV)~t!nJ!{a$4j5u}-$Umfn|ANt+AQicvj$M_raG(0{PMEoJ;_+>SB zg=OAey+#9J=895^?zMn-Gbbv$ zpliLtg?eaNC?zM6Rjt}P#!gwujwt6bI+3(|@g|K`pV90i3C`Efkybmi$(L3W5 zQWi8Q7TB;LGMgf;Gj&qvf9!UZsFdLQZF7S4_s3u&(l@pF)*?tZBYJqiV_=KlV^Hzg@aDDCDB$wj)rxTP^YyU{z3fGz` zzZ6{uF~eD|thy7ybAkF58w^a=FdW_}`cH}o&Lp3gui}>z2HrV3Sl-2aE}s^r=zkdLPDMuIA zNE>so)f_S3QBQY=E`#@j@^BP>9*P_~J16`xu$7sLfXL}`j$_q)`)fP;gMa9cV^ihj zu*`B&h>B3OUSriUZy^E=enGz{gSiM4i6Ks{^SiL&f~+!Eq-!nK!NDjun$LhhgGH|T zDsOT#-f-=v`oH<~eXHp=xvzu%h=F?7^d^#m0~@TARZGZaI6BGOG!$pjZ|xRr?kkXc24>Ye%kk;d zPZu+!Up^M;YZ&;^Ajhn1a2hWV@2_3{6Skzz+`Lvlh!SFN@t+c{HwKQo8xMPfUK~pJ zh|ThOT|WOTPhAk#cM6twT{${7lOf)q)9Rod{h6fXSm ze#13FRFFf?xKi>0)Sx^qVRFlt1Mz>DBNQfAnU6lB&#g2tcZ`#*F7y-(FOTC@9-0+U zzxViegB7ENkAX`J3$EhdDZmG;BGb(F0rD7NH&4dm3qdo2D*IPKbCP64JBpHc9NB40 zYH2D~Y0ll!e96imZ#TTDIb;8#-vGW323ys7UDlE2T<_DXF6QtA#$j7vdiF`&Jh2}L zQjXUR=a;%jo0}BnvY3U&-=S?BWMFUk8|yU@HjGAb3-3u%69s>0^L~DTb1@l|Bd@uw z1YMkEr&486fGYr4skhABc1Po7mP_P8Y2@*_Ni8NKyFjR(Nw?-Qw<)GF{Sr;4Cwt0e zOk5{Y*|QynBMGt+-RT>8{fWmb%_VX}~^XsieF zjYEr6TA|WDoCPZeix|pQj!97nf$pVMsKCCAtb+ThicZ_}mJ)d`sJrxE zu%s@$7bz3ZRD`8e|1i)Y#xZYKrhM?rJ~g;EJdInV-dLwTLifFuVe_0|{d2he586PE zwS}`=!*zn4xmfbxS#oiF+mkZ26b#PVe`fTV`xQPFY@MFMg!$zV{CQkU#wrqlt<+s8 zU2chgH)M+snn7pv`Fa9DWcP0`B?|cp4VIuHdoQdK$yU8kpSI#_5v&QV2kt~az6Qz#aE^D`LlF2Q4B=q&oCkD)?e@blc; zU#^3;rLKMB7cK~MdgR%hj;A|)qG=zS$f0$dXmh_Xh7hgT4g>V`;rjMcCS6-7QPu)v z9K9}%(!x~G{99MLD-T?SL-{}>*c3a3;Mlj~0VfyaG@ zq%Vh25muck@?8}TIl-`Y#QISp=i4&%^4KITk_53aNO>a&1Y;3~6I@*iiisW-mlD7o zM7g7^I|-y(j&5O!6og_OcmyPW8Q?+AGPyPz7spHE-XR{gxV94#&KmWEb!2=L<#;>b zO72LNN2vombF8=HdF0ps24;h3gHl}re->ki1s>e%9=>>A#1tES*-r+V8??ikzm}TM zF}NFBjP^2l>O)^YdaHtg<&TUjmo>(IBedZBDbLSN6ot>ooY5*coVa2Wb;ExY2D_}9 zdaFs^NnM~>j8MV9j4>lOaTLjt))}0Q;qryMs3)sSxgkT#u9H=!W9B}BSUg#TOlw{1 zjq0rgZZhHkK6V4@hcWH{G!R6JqVHlZ%6d`?Ftb>5BWZwKVL{lJ zW0_9K2Ygmak5R-n=5*GN#cz(0IYb$cEJnk!n6NuEMhprkIx7O=I}B`lhpgRiDNT)C zXz4RPDzosdEpQ|8+(Sr>Vb$Sx)3wb_0bGL58+?uGaVD{ns)HVEui_X4Gd`Qx-Cw#; zZh_O)H>oVePKB8b+eXHmMxz`2ZW)U+Yt+@BYj&$C`mZE?2t9s|3_7^foVH#kAB-^* z6TW$unLsF~7>QsbxDx-YVT4&kG2S3_fUrtO(iYb@U|iC`{*$Mbd$ey@qO8H0?UnQL zRY1m=!}tax4!DL4_N1(564*pi@=n#kGW70>TVLwkABsVCmcbcMgn86V+>m9}il*w@ zHLTbjc2?e<;NP$s7}VuAw6C#h#Pkf7M&d0-1^Rigm2r9!a&Wtcfi*HHA}W$$sY56> z$F0Nqk9Ul2A2|h%Hcq%HY_qx5RUqGY?8J%)^dW#RXw`fg!~ z_o?#{0d!~6rL?MH_k|ZpBo_U!6$9l%E#J~tB(sh0S|N{=(-EtWJBroZ5RNS~W4-nS zUA?KEG6C`-LBa3F=GqExIwnUH;acjfect5=#ES~(+pY`_#R_?1Am>Cz`R-f^;+hr`~c8{j-R=?SWI3(LgQ5Z@XY>~`HA2!&fTGHo{z zCz?Dd6p$e6Egd45?<2!~qe-R`Z<=_?I)LL_(V|)Gp!qoT4)eeuY{xJ(ED->a_dGl0 ze1LM|$U#`l1yFLI%6aq{ql-qf1_Hmi;m8D(Je!9$$VhzXjJ#J2YwA6ZGx)1SM%=eN zpzEjHo`(BFB?7iNT(R~v3l^1aBP_H#d6c;!Rr2>I)m11X=}ok7L!)0U7-=1AZ#o9G zx{cLmmchn?F53VF(7a1mlB|kT&Iht08{u0{J4v;s!$v${(iK#A+ph_lLgyRRzMx%P z{>(&CEKga@uBJJukyC6#d9ZP-Ui?Hum4OG(N9d|bHk{t~NfJ#8j+1pcMFZGJ`4SkQG_QiWM$CCS(@8#I^UmSJXA zbetHI{C075SS;`TY`miQc3ePG-J*-01??5??nKmNLtt8zfaZuqaDUu$$XA5abx&Mq z7KVO0GQ4ZGiVV@}`Q=%VE2OCy|6!TvoQEKENUt4Pa$Prmi*7*j;G~9wneFrhgSzoA zbSwq^5DDw<4=PmQzPumNo-Of;Y3ZVbSBQE?jSNBb1Pl3oRO~kWgzlhkrsT~)k%dR; z63ce8)cYF=#0y=!SCZiDVIwn~#7Kg^I+1OhH5q}?>}T^9>0^VPxAX=E2PubbNC*De z%WBYDa?j-ABki{%ET2jLd@m3}QW3`=w!ZT;8#wq>QEd#SV;x%&xD%bBYIZzsxmm* z;=E~9DElZxFtW;((jrI=#9DNr4A)139WRxo@S-%1)KJ6 zSS3CS&0ffl@5Me&OSu+$=lv`J!n`$5`mVTXm?fVlPWa1!(}Ls711f7nL<_vr0lmU5j4)kP=K&|v1+nrP+k@3iefUbJv zY0==OUB?<7M^LZXcE6ifc>P6!S@m6Yv{A2%Q<6bNiI9`924T&^Tl!OIAbCWYRztb_ zb%_?gpV|tV(@2U55IWWsU+Vup?P+BRHT2Y-{FlC%(^1X3UeY#j_Yg6`Y(HL{=%?=I zG~eHA$jpZ<=`J7eh7np=`AQ%jFBG}x)p1{azNF7R@81XJ^EHvl+X(%ht!8{$fZev* zS6PTrOc>i0tyj6SeWgudd`e396a6bO%rh2M-VsykKh4BdA-F~hGeQx>!WF{4T^+=# zsSM9 ze0Sm4BqlgBO7~#A{Q8s)l`q(fGPn(05K}tCRJ> z_LkB0U9tMrl<3lml^nL8?B*KJ_k? zU!$K0VSo29B*=;$`MvDvJT)&I06dZ~Y)+7V>*GisW#3 zTqo64)ya?F`E@4VmX|I}Zv1o#mjU}+I;l#(`{0;};TV?`Yo^!qCZuYJNZG#X=@ z@jr+tZ(!{>vE=>Gi*Dm(S6+KzyL#bhPk9XW_^~XA9ic*x{3A9yVXIdKxxM6r_l9bYIvI#1rtC)S0Y5!Wf|Eb8OUyOl$_u_E{fUOcyb6H;>{ZQto4y{wB! zq{r;=Y$cSL>X@n40`@nCiqzxdsuuR<`&c(;I-8wA8ODLOMr|9rRY4^2>`p!vT$&rY@RR1QB| zc|6QKa{N0P-!}Ozl^3S}<^wY1L8dRGk0a)P{?hWinZFyOfA9B*N3{+g`0~_&2>&5z zLa%1v^uazjZakyXkq{rB_VSG~6BCod%~~B*eo0TmIYJJ3T_pW;bkuN`rlq|tf#~jI za+D*Pj<2eClnM(SiJeD;ol9`db511oX5%6ecX#7lGR4{PF<_}A!?@ez)~slqMNbq! z!?D@?K8QvuAv^#RhxIQ`&K=eJ{+=D2DnN}glY+9Xw!dX*L@}0=(-WC2{h33WO*!~& zZQOg~{v1V6;FKodro_pwvn1?iI5ur*Y`(tG0=&1ky*_5XgMBCFA`}YE17#!Ut5^wP zvjTYT8_l=3901Q6*r`2Qy6JC$`a+h4!~VYm7ZtSP{_!!cvMmaDDP|BjfE!qFVde~e z9T7)J&*~jKg7j~uh?TPg7QEt{^Gl@Z;Bf@&8PEYA6zz7<0nKS1J8&Grxhg>6J7joo zRf3ow0*nk!%bNEyMxr~vBiPg)RLdxb+Unx7X^Saw5~b&nc;X@Vp}9KCrJAiaymyeJ zW&(V`0wHO(X3%XrFalNiL3aZh3Z?8!FY8se%BeP8amD=RMQj|65QY5 z3B<&K<>1y}rwBV8hv}u*uVo{QM#;-^@V@x(1HU;T^Z7!q|5kLA$Xecp1o9p8aZV}A zFmdK`Kq8rYtZ@SBk!?2?6Z=td5+?!gXrU%fdAE?YWbG7%y{jg`i}w!;Cp_gtTnq#J z>-Q#3i;j0_e3ZhcO#=KF{C9E)cRC7W6%B1-L4!a!<8pXFIf?%#8VsiQXpHhQ1kd~c zz{)C0h8H^k;K4PoOIi!B`QCSoh6YXo8z(Uj&|PdkivS3URrtzscce1&E$dE+Cy)TYpE3&ML@N-bp^3Yp(h%X@my!>*p>&8EwGvv~h zN!3IEC@bNP&qsR}hen&-i{h=W164W5_EL@8h1V9qe%e&9%>^CDi z0Ls9VusTJ!34#m&rM?Uj!rfXnce%LN_=GsTZn}>F$zlMggIP`-6S?x#`E4R0+_zrh zYJYf%A9`UFcc$rH;^()Pi4rv;({Q&+9nJS8ep`s+3cT<7CF**Vd2@t09D2(Ao?C;t zD-pE#pn%^lc|#qsOYr5|k8>rDDVFv%VTvu0K%m?i5+s)(@y9DbLHQL`dWHkQsE}+2 z_njC_+)qC?UiOAV43x7^1-GfS4jq||Hyl*gt?u^uR;3X?_TipMWh}8lGcR{%UtWdA&w~+d zpoMVN@4%SlJ|7bWG-Qgoovptbm5`w4_l#^<@#JvNv>Lyek(JqF2CNGJ{uk?@|XH4RGFHd%w1jM6cxAX#uv{~)x{Ad8sIP_u>l8d z^3LpU&D3USFmt)HzKOC_p#fMdq;eRH(aXPy0X!o;;l9$u6~U6Sj0_GDJ&L^cQuGR_eyWw>WE zDCJ_SJJrORHCbXQxRwlH$@OFkw;}?@>|dIdXpshj zCNj}Zn6xYadA@%^g-3>8o3&8oug&jLKh@XM@_<(=o0GstETSbaVgk1I|*eg@uPk6aUvzzx!Uh_wiS@c}pEthirzaRt$(uxSF3W2vJ;>PFht7u2yhZdyR?PkO+Ztc=Ptu>=g&Nw%PW8l82V z(NytLYOl_F{3PitSLl!!umaxtCipr~DwF>5ty&uihq683+TR^CIVtL(QK9{U9Ypv; z*vS`TPFwc*T@OMJRl(A|tEmt9-aPN-%#UZO=H5y6aZtxs`J^Ig!#q&xcjVILeYBEXd>&gxJ} zWTAp#ZV1Mjy`l;HrFO(EJb^qm*haGIMX}~^;pf;Hh$8xVHB6xifeTAhxxLbF><48M+ zYm=#{ZnS)ebeh1|LO@90+$p@;zI}@cDYhK8pW0E)M~%cM9)RU?Y&#)i-zjm+VdaN1 z>sN$faL((ZwGC&`inXTPOM^Waoq;#9~Bdl}?07y^Cvi;zT(b<>yAfMn(*bReE6b zB>+HV-cON*06SoDaXJV}z-MSdG-2ZRf_OEN%y2XDdE9ow{u-;|$Xeo_Zxdr+q4*uX z7`$>qSFZS-J8uaw%%rti^OpJdRz;gA!l1USzoPPpj(Ir1UE~>FZ?l;xNO;wT{Q#t| z48YX;s?w*A0Dw&3@M?#pFi_0wCQmDnJfhS37g%DPi~qLkonnM@p7u4D_*oHG0)RMa zlJV5j$nIsr0|cAJSzQk%@*w~PUy2vJa}IIqD^H)-ro|MJ?iooLu78=LoSbLdKkY5; zlbuDr1S}9GF%YCMb-4@`Qv-n;KC8?e4qA(6Y~@&ciw5+qGn*GYWH%yOBGyfuS8=B? z;y>TfbRDp5+HcebexGZ82&}%yPHD0_$P!6-8egOMsny9}`-7gKDGqCtCBFtzemwD70;0^_jf6} z9QQKHzszLC(orlQ!-wV&SD3LxNTLmvx0zIGy!9utTESln<~Hppza+!h!m z0kmy5w5XO~I(qPV@NUyvj-Lt^Jos-K{uTTi=cUL+)Ydi{FLoA45Qxxo2Ueu#Y6xAv$nDx@rCEOQv5#uE+RX6#y8n5vnUo zrut#exk@jn`J%g%gt$TzXWHr`tw?yKBv@OYA0`Rsgp^>KahQfG8{UAT-|s&cf>2zmZISg%7eB&SEe2NYA%22xfe%{e=u69})mlS^k;HH;1V-XxFP2 zH2yOgV0FpVN9&R)$f01ju$k?jsM>rI|AUp0N407ng9R* literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 2579c7e..54a71bd 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Domain names are the unique, human-readable Internet addresses of websites. They are made up of three parts: a top-level domain (a.k.a. TLD), a second-level domain name, and an optional subdomain. -drawing +drawing ## Changes in 3.0.0