<div class="code panel" style="border-width: 1px;"><div class="codeContent panelContent"><div class="container">
<div class="line"><code class="jet plain">namespace</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">addressbook</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">class</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Contact</code><code class="jet plain">(</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">name</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">emails</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">List</code><code class="jet plain">&lt;</code><code class="jet plain">EmailAddress</code><code class="jet plain">&gt;</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">addresses</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">List</code><code class="jet plain">&lt;</code><code class="jet plain">PostalAddress</code><code class="jet plain">&gt;</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">phonenums</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">List</code><code class="jet plain">&lt;</code><code class="jet plain">PhoneNumber</code><code class="jet plain">&gt;</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">)</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">class</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">EmailAddress</code><code class="jet plain">(</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">user</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">host</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">)</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">class</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">PostalAddress</code><code class="jet plain">(</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">streetAddress</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">city</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">zip</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">state</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">USState</code><code class="jet plain">?</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">country</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;</code><code class="jet plain">assert</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code><code class="jet plain">(</code><code class="jet plain">state</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">==</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">null</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">xor</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">(</code><code class="jet plain">country</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">==</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Countries</code><code class="jet plain">[</code><code class="jet string">&quot;</code><code class="jet string">US</code><code class="jet string">&quot;</code><code class="jet plain">]</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">}</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">}</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">class</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">PhoneNumber</code><code class="jet plain">(</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">country</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">areaCode</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Int</code><code class="jet plain">,</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">number</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Long</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">)</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">object</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Countries</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet keyword">fun</code><code class="jet whitespace">&nbsp;</code><code class="jet softkeyword">get</code><code class="jet plain">(</code><code class="jet plain">id</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">CountryID</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">=</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">countryTable</code><code class="jet plain">[</code><code class="jet plain">id</code><code class="jet plain">]</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet softkeyword">private</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">var</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">table</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Map</code><code class="jet plain">&lt;</code><code class="jet plain">String</code><code class="jet plain">,</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet plain">&gt;</code><code class="jet plain">?</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">=</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">null</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;</code><code class="jet softkeyword">private</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">countryTable</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Map</code><code class="jet plain">&lt;</code><code class="jet plain">String</code><code class="jet plain">,</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet plain">&gt;</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet softkeyword">get</code><code class="jet plain">(</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet keyword">if</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">(</code><code class="jet plain">table</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">==</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">null</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet plain">table</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">=</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">HashMap</code><code class="jet plain">(</code><code class="jet plain">)</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet keyword">for</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">(</code><code class="jet plain">line</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">in</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">TextFile</code><code class="jet plain">(</code><code class="jet string">&quot;</code><code class="jet string">countries.txt</code><code class="jet string">&quot;</code><code class="jet plain">)</code><code class="jet plain">.</code><code class="jet plain">lines</code><code class="jet plain">(</code><code class="jet plain">stripWhiteSpace</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">=</code><code class="jet whitespace">&nbsp;</code><code class="jet keyword">true</code><code class="jet plain">)</code><code class="jet plain">)</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">{</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet plain">table</code><code class="jet plain">[</code><code class="jet plain">line</code><code class="jet plain">]</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">=</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet plain">(</code><code class="jet plain">line</code><code class="jet plain">)</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet plain">}</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet plain">}</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet keyword">return</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">table</code>&nbsp;</div>
<div class="line"><code class="jet whitespace">&nbsp;&nbsp;&nbsp;&nbsp;</code><code class="jet plain">}</code>&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet plain">}</code>&nbsp;</div>
<div class="line">&nbsp;</div>
<div class="line"><code class="jet whitespace"></code><code class="jet keyword">class</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">Country</code><code class="jet plain">(</code><code class="jet keyword">val</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">name</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">:</code><code class="jet whitespace">&nbsp;</code><code class="jet plain">String</code><code class="jet plain">)</code></div></div></div></div>