-
Notifications
You must be signed in to change notification settings - Fork 10
/
blockchainvr.html
240 lines (223 loc) · 43.9 KB
/
blockchainvr.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="mobile-web-app-capable" content="yes">
<title>
Blockchain Virtual Worlds - HackMD
</title>
<link rel="icon" type="image/png" href="https://hackmd.io/favicon.png">
<link rel="apple-touch-icon" href="https://hackmd.io/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" integrity="sha256-eZrrJcwDc/3uDhsdt61sL2oOBY362qM3lon1gyExkL0=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css" integrity="sha256-3iu9jgsy9TpTwXKb7bNQzqWekRX7pPK+2OLj3R922fo=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/octicons/3.5.0/octicons.min.css" integrity="sha256-QiWfLIsCT02Sdwkogf6YMiQlj4NE84MKkzEMkZnMGdg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism.min.css" integrity="sha256-vtR0hSWRc3Tb26iuN2oZHt3KRUomwTufNIf5/4oeCyg=" crossorigin="anonymous" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@hackmd/[email protected]/dist/css/basic/emojify.min.css" integrity="sha256-UOrvMOsSDSrW6szVLe8ZDZezBxh5IoIfgTwdNDgTjiU=" crossorigin="anonymous" />
<style>
@charset "UTF-8";@import url(https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,500,500i|Source+Code+Pro:300,400,500|Source+Sans+Pro:300,300i,400,400i,600,600i|Source+Serif+Pro&subset=latin-ext);.hljs{display:block;background:#fff;padding:.5em;color:#333;overflow-x:auto}.hljs-comment,.hljs-meta{color:#969896}.hljs-emphasis,.hljs-quote,.hljs-string,.hljs-strong,.hljs-template-variable,.hljs-variable{color:#df5000}.hljs-keyword,.hljs-selector-tag,.hljs-type{color:#a71d5d}.hljs-attribute,.hljs-bullet,.hljs-literal,.hljs-number,.hljs-symbol{color:#0086b3}.hljs-built_in,.hljs-builtin-name{color:#005cc5}.hljs-name,.hljs-section{color:#63a35c}.hljs-tag{color:#333}.hljs-attr,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-selector-pseudo,.hljs-title{color:#795da3}.hljs-addition{color:#55a532;background-color:#eaffea}.hljs-deletion{color:#bd2c00;background-color:#ffecec}.hljs-link{text-decoration:underline}.markdown-body{font-size:16px;line-height:1.5;word-wrap:break-word}.markdown-body:after,.markdown-body:before{display:table;content:""}.markdown-body:after{clear:both}.markdown-body>:first-child{margin-top:0!important}.markdown-body>:last-child{margin-bottom:0!important}.markdown-body a:not([href]){color:inherit;text-decoration:none}.markdown-body .absent{color:#c00}.markdown-body .anchor{float:left;padding-right:4px;margin-left:-20px;line-height:1}.markdown-body .anchor:focus{outline:none}.markdown-body blockquote,.markdown-body dl,.markdown-body ol,.markdown-body p,.markdown-body pre,.markdown-body table,.markdown-body ul{margin-top:0;margin-bottom:16px}.markdown-body hr{height:.25em;padding:0;margin:24px 0;background-color:#e7e7e7;border:0}.markdown-body blockquote{font-size:16px;padding:0 1em;color:#777;border-left:.25em solid #ddd}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body kbd,.popover kbd{display:inline-block;padding:3px 5px;font-size:11px;line-height:10px;color:#555;vertical-align:middle;background-color:#fcfcfc;border:1px solid #ccc;border-bottom-color:#bbb;border-radius:3px;box-shadow:inset 0 -1px 0 #bbb}.markdown-body .loweralpha{list-style-type:lower-alpha}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:24px;margin-bottom:16px;font-weight:600;line-height:1.25}.markdown-body h1 .octicon-link,.markdown-body h2 .octicon-link,.markdown-body h3 .octicon-link,.markdown-body h4 .octicon-link,.markdown-body h5 .octicon-link,.markdown-body h6 .octicon-link{color:#000;vertical-align:middle;visibility:hidden}.markdown-body h1:hover .anchor,.markdown-body h2:hover .anchor,.markdown-body h3:hover .anchor,.markdown-body h4:hover .anchor,.markdown-body h5:hover .anchor,.markdown-body h6:hover .anchor{text-decoration:none}.markdown-body h1:hover .anchor .octicon-link,.markdown-body h2:hover .anchor .octicon-link,.markdown-body h3:hover .anchor .octicon-link,.markdown-body h4:hover .anchor .octicon-link,.markdown-body h5:hover .anchor .octicon-link,.markdown-body h6:hover .anchor .octicon-link{visibility:visible}.markdown-body h1 code,.markdown-body h1 tt,.markdown-body h2 code,.markdown-body h2 tt,.markdown-body h3 code,.markdown-body h3 tt,.markdown-body h4 code,.markdown-body h4 tt,.markdown-body h5 code,.markdown-body h5 tt,.markdown-body h6 code,.markdown-body h6 tt{font-size:inherit}.markdown-body h1{font-size:2em}.markdown-body h1,.markdown-body h2{padding-bottom:.3em;border-bottom:1px solid #eee}.markdown-body h2{font-size:1.5em}.markdown-body h3{font-size:1.25em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#777}.markdown-body ol,.markdown-body ul{padding-left:2em}.markdown-body ol.no-list,.markdown-body ul.no-list{padding:0;list-style-type:none}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:0;margin-bottom:0}.markdown-body li>p{margin-top:16px}.markdown-body li+li{padding-top:.25em}.markdown-body dl{padding:0}.markdown-body dl dt{padding:0;margin-top:16px;font-size:1em;font-style:italic;font-weight:700}.markdown-body dl dd{padding:0 16px;margin-bottom:16px}.markdown-body table{display:block;width:100%;overflow:auto;word-break:normal;word-break:keep-all}.markdown-body table th{font-weight:700}.markdown-body table td,.markdown-body table th{padding:6px 13px;border:1px solid #ddd}.markdown-body table tr{background-color:#fff;border-top:1px solid #ccc}.markdown-body table tr:nth-child(2n){background-color:#f8f8f8}.markdown-body img{max-width:100%;box-sizing:content-box;background-color:#fff}.markdown-body img[align=right]{padding-left:20px}.markdown-body img[align=left]{padding-right:20px}.markdown-body .emoji{max-width:none;vertical-align:text-top;background-color:transparent}.markdown-body span.frame{display:block;overflow:hidden}.markdown-body span.frame>span{display:block;float:left;width:auto;padding:7px;margin:13px 0 0;overflow:hidden;border:1px solid #ddd}.markdown-body span.frame span img{display:block;float:left}.markdown-body span.frame span span{display:block;padding:5px 0 0;clear:both;color:#333}.markdown-body span.align-center{display:block;overflow:hidden;clear:both}.markdown-body span.align-center>span{display:block;margin:13px auto 0;overflow:hidden;text-align:center}.markdown-body span.align-center span img{margin:0 auto;text-align:center}.markdown-body span.align-right{display:block;overflow:hidden;clear:both}.markdown-body span.align-right>span{display:block;margin:13px 0 0;overflow:hidden;text-align:right}.markdown-body span.align-right span img{margin:0;text-align:right}.markdown-body span.float-left{display:block;float:left;margin-right:13px;overflow:hidden}.markdown-body span.float-left span{margin:13px 0 0}.markdown-body span.float-right{display:block;float:right;margin-left:13px;overflow:hidden}.markdown-body span.float-right>span{display:block;margin:13px auto 0;overflow:hidden;text-align:right}.markdown-body code,.markdown-body tt{padding:0;padding-top:.2em;padding-bottom:.2em;margin:0;font-size:85%;background-color:rgba(0,0,0,.04);border-radius:3px}.markdown-body code:after,.markdown-body code:before,.markdown-body tt:after,.markdown-body tt:before{letter-spacing:-.2em;content:"\00a0"}.markdown-body code br,.markdown-body tt br{display:none}.markdown-body del code{text-decoration:inherit}.markdown-body pre{word-wrap:normal}.markdown-body pre>code{padding:0;margin:0;font-size:100%;word-break:normal;white-space:pre;background:transparent;border:0}.markdown-body .highlight{margin-bottom:16px}.markdown-body .highlight pre{margin-bottom:0;word-break:normal}.markdown-body .highlight pre,.markdown-body pre{padding:16px;overflow:auto;font-size:85%;line-height:1.45;background-color:#f7f7f7;border-radius:3px}.markdown-body pre code,.markdown-body pre tt{display:inline;max-width:auto;padding:0;margin:0;overflow:visible;line-height:inherit;word-wrap:normal;background-color:transparent;border:0}.markdown-body pre code:after,.markdown-body pre code:before,.markdown-body pre tt:after,.markdown-body pre tt:before{content:normal}.markdown-body .csv-data td,.markdown-body .csv-data th{padding:5px;overflow:hidden;font-size:12px;line-height:1;text-align:left;white-space:nowrap}.markdown-body .csv-data .blob-line-num{padding:10px 8px 9px;text-align:right;background:#fff;border:0}.markdown-body .csv-data tr{border-top:0}.markdown-body .csv-data th{font-weight:700;background:#f8f8f8;border-top:0}.news .alert .markdown-body blockquote{padding:0 0 0 40px;border:0 none}.activity-tab .news .alert .commits,.activity-tab .news .markdown-body blockquote{padding-left:0}.task-list-item{list-style-type:none}.task-list-item label{font-weight:400}.task-list-item.enabled label{cursor:pointer}.task-list-item+.task-list-item{margin-top:3px}.task-list-item-checkbox{float:left;margin:.31em 0 .2em -1.3em!important;vertical-align:middle;cursor:default!important}.markdown-body{padding-top:40px;padding-bottom:40px;max-width:758px;overflow:visible!important}.markdown-body .emoji{vertical-align:top}.markdown-body pre{border:inherit!important}.markdown-body code{color:inherit!important}.markdown-body pre code .wrapper{display:-moz-inline-flex;display:-ms-inline-flex;display:-o-inline-flex;display:inline-flex}.markdown-body pre code .gutter{float:left;overflow:hidden;-webkit-user-select:none;user-select:none}.markdown-body pre code .gutter.linenumber{text-align:right;position:relative;display:inline-block;cursor:default;z-index:4;padding:0 8px 0 0;min-width:20px;box-sizing:content-box;color:#afafaf!important;border-right:3px solid #6ce26c!important}.markdown-body pre code .gutter.linenumber>span:before{content:attr(data-linenumber)}.markdown-body pre code .code{float:left;margin:0 0 0 16px}.markdown-body .gist .line-numbers{border-left:none;border-top:none;border-bottom:none}.markdown-body .gist .line-data{border:none}.markdown-body .gist table{border-spacing:0;border-collapse:inherit!important}.markdown-body code[data-gist-id]{background:none;padding:0}.markdown-body code[data-gist-id]:after,.markdown-body code[data-gist-id]:before{content:""}.markdown-body code[data-gist-id] .blob-num{border:unset}.markdown-body code[data-gist-id] table{overflow:unset;margin-bottom:unset}.markdown-body code[data-gist-id] table tr{background:unset}.markdown-body[dir=rtl] pre{direction:ltr}.markdown-body[dir=rtl] code{direction:ltr;unicode-bidi:embed}.markdown-body .alert>p{margin-bottom:0}.markdown-body pre.abc,.markdown-body pre.flow-chart,.markdown-body pre.graphviz,.markdown-body pre.mermaid,.markdown-body pre.sequence-diagram,.markdown-body pre.vega{text-align:center;background-color:inherit;border-radius:0;white-space:inherit;overflow:visible}.markdown-body pre.abc>code,.markdown-body pre.flow-chart>code,.markdown-body pre.graphviz>code,.markdown-body pre.mermaid>code,.markdown-body pre.sequence-diagram>code,.markdown-body pre.vega>code{text-align:left}.markdown-body pre.abc>svg,.markdown-body pre.flow-chart>svg,.markdown-body pre.graphviz>svg,.markdown-body pre.mermaid>svg,.markdown-body pre.sequence-diagram>svg,.markdown-body pre.vega>svg{max-width:100%;height:100%}.markdown-body pre>code.wrap{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}.markdown-body .alert>p,.markdown-body .alert>ul{margin-bottom:0}.markdown-body summary{display:list-item}.markdown-body summary:focus{outline:none}.markdown-body details summary{cursor:pointer}.markdown-body details:not([open])>:not(summary){display:none}.markdown-body figure{margin:1em 40px}.markdown-body .mark,.markdown-body mark{background-color:#fff1a7}.vimeo,.youtube{cursor:pointer;display:table;text-align:center;background-position:50%;background-repeat:no-repeat;background-size:contain;background-color:#000;overflow:hidden}.vimeo,.youtube{position:relative;width:100%}.youtube{padding-bottom:56.25%}.vimeo img{width:100%;object-fit:contain;z-index:0}.youtube img{object-fit:cover;z-index:0}.vimeo iframe,.youtube iframe,.youtube img{width:100%;height:100%;position:absolute;top:0;left:0}.vimeo iframe,.youtube iframe{vertical-align:middle;z-index:1}.vimeo .icon,.youtube .icon{position:absolute;height:auto;width:auto;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:.3;transition:opacity .2s;z-index:0}.vimeo:hover .icon,.youtube:hover .icon{opacity:.6;transition:opacity .2s}.slideshare .inner,.speakerdeck .inner{position:relative;width:100%}.slideshare .inner iframe,.speakerdeck .inner iframe{position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%}.MJX_Assistive_MathML{display:none}.ui-infobar{position:relative;z-index:2;max-width:760px;margin:25px auto -25px;padding:0 15px;color:#777}.toc .invisable-node{list-style-type:none}.ui-toc{position:fixed;bottom:20px;z-index:998}.ui-toc-label{opacity:.3;background-color:#ccc;border:none;transition:opacity .2s}.ui-toc .open .ui-toc-label{opacity:1;color:#fff;transition:opacity .2s}.ui-toc-label:focus{opacity:.3;background-color:#ccc;color:#000}.ui-toc-label:hover{opacity:1;background-color:#ccc;transition:opacity .2s}.ui-toc-dropdown{margin-top:23px;margin-bottom:20px;padding-left:10px;padding-right:10px;max-width:45vw;width:25vw;max-height:70vh;overflow:auto;text-align:inherit}.ui-toc-dropdown>.toc{max-height:calc(70vh - 100px);overflow:auto}.ui-toc-dropdown[dir=rtl] .nav{padding-right:0;letter-spacing:.0029em}.ui-toc-dropdown a{overflow:hidden;text-overflow:ellipsis;white-space:pre}.ui-toc-dropdown .nav>li>a{display:block;padding:4px 20px;font-size:13px;font-weight:500;color:#767676}.ui-toc-dropdown .nav>li:first-child:last-child > ul,.ui-toc-dropdown .toc.expand ul{display:block}.ui-toc-dropdown .nav>li>a:focus,.ui-toc-dropdown .nav>li>a:hover{padding-left:19px;color:#000;text-decoration:none;background-color:transparent;border-left:1px solid #000}.ui-toc-dropdown[dir=rtl] .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav>li>a:hover{padding-right:19px;border-left:none;border-right:1px solid #000}.ui-toc-dropdown .nav>.active:focus>a,.ui-toc-dropdown .nav>.active:hover>a,.ui-toc-dropdown .nav>.active>a{padding-left:18px;font-weight:700;color:#000;background-color:transparent;border-left:2px solid #000}.ui-toc-dropdown[dir=rtl] .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav>.active>a{padding-right:18px;border-left:none;border-right:2px solid #000}.ui-toc-dropdown .nav .nav{display:none;padding-bottom:10px}.ui-toc-dropdown .nav>.active>ul{display:block}.ui-toc-dropdown .nav .nav>li>a{padding-top:1px;padding-bottom:1px;padding-left:30px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a{padding-right:30px}.ui-toc-dropdown .nav .nav>li>ul>li>a{padding-top:1px;padding-bottom:1px;padding-left:40px;font-size:12px;font-weight:400}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a{padding-right:40px}.ui-toc-dropdown .nav .nav>li>a:focus,.ui-toc-dropdown .nav .nav>li>a:hover{padding-left:29px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>a:hover{padding-right:29px}.ui-toc-dropdown .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown .nav .nav>li>ul>li>a:hover{padding-left:39px}.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:focus,.ui-toc-dropdown[dir=rtl] .nav .nav>li>ul>li>a:hover{padding-right:39px}.ui-toc-dropdown .nav .nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>a{padding-left:28px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>a{padding-right:28px}.ui-toc-dropdown .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown .nav .nav>.active>.nav>.active>a{padding-left:38px;font-weight:500}.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:focus>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active:hover>a,.ui-toc-dropdown[dir=rtl] .nav .nav>.active>.nav>.active>a{padding-right:38px}.markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,sans-serif}html[lang^=ja] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] .markdown-body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html .markdown-body[lang^=ja]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html .markdown-body[lang=zh-tw]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html .markdown-body[lang=zh-cn]{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Helvetica,Roboto,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}html[lang^=ja] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html[lang=zh-tw] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html[lang=zh-cn] .ui-toc-dropdown{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}html .ui-toc-dropdown[lang^=ja]{font-family:Source Sans Pro,Helvetica,Arial,Meiryo UI,MS PGothic,MS\ Pゴシック,sans-serif}html .ui-toc-dropdown[lang=zh-tw]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft JhengHei UI,微軟正黑UI,sans-serif}html .ui-toc-dropdown[lang=zh-cn]{font-family:Source Sans Pro,Helvetica,Arial,Microsoft YaHei UI,微软雅黑UI,sans-serif}.ui-affix-toc{position:fixed;top:0;max-width:15vw;max-height:70vh;overflow:auto}.back-to-top,.expand-toggle,.go-to-bottom{display:block;padding:4px 10px;margin-top:10px;margin-left:10px;font-size:12px;font-weight:500;color:#999}.back-to-top:focus,.back-to-top:hover,.expand-toggle:focus,.expand-toggle:hover,.go-to-bottom:focus,.go-to-bottom:hover{color:#563d7c;text-decoration:none}.back-to-top,.go-to-bottom{margin-top:0}.ui-user-icon{width:20px;height:20px;display:block;border-radius:3px;margin-top:2px;margin-bottom:2px;margin-right:5px;background-position:50%;background-repeat:no-repeat;background-size:cover}.ui-user-icon.small{width:18px;height:18px;display:inline-block;vertical-align:middle;margin:0 0 .2em}.ui-infobar>small>span{line-height:22px}.ui-infobar>small .dropdown{display:inline-block}.ui-infobar>small .dropdown a:focus,.ui-infobar>small .dropdown a:hover{text-decoration:none}.ui-published-note{color:#337ab7}.ui-published-note .fa{font-size:20px;vertical-align:top}.unselectable{-webkit-user-select:none;-o-user-select:none;user-select:none}@media print{blockquote,div,img,pre,table{page-break-inside:avoid!important}a[href]:after{font-size:12px!important}}.markdown-body.slides{position:relative;z-index:1;color:#222}.markdown-body.slides:before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;background-color:currentColor;box-shadow:0 0 0 50vw}.markdown-body.slides section[data-markdown]{position:relative;margin-bottom:1.5em;background-color:#fff;text-align:center}.markdown-body.slides section[data-markdown] code{text-align:left}.markdown-body.slides section[data-markdown]:before{content:"";display:block;padding-bottom:56.23%}.markdown-body.slides section[data-markdown]>div:first-child{position:absolute;top:50%;left:1em;right:1em;transform:translateY(-50%);max-height:100%;overflow:hidden}.markdown-body.slides section[data-markdown]>ul{display:inline-block}.markdown-body.slides>section>section+section:after{content:"";position:absolute;top:-1.5em;right:1em;height:1.5em;border:3px solid #777}body{font-smoothing:subpixel-antialiased!important;-webkit-font-smoothing:subpixel-antialiased!important;-moz-osx-font-smoothing:auto!important;text-shadow:0 0 1em transparent,1px 1px 1.2px rgba(0,0,0,.004);-webkit-overflow-scrolling:touch;letter-spacing:.025em}.focus,:focus{outline:none!important}::-moz-focus-inner{border:0!important}body{font-family:Source Sans Pro,Helvetica,Arial,sans-serif}html[lang^=ja] body{font-family:Source Sans Pro,Helvetica,Arial,Hiragino Kaku Gothic Pro,ヒラギノ角ゴ Pro W3,Osaka,Meiryo,メイリオ,MS Gothic,MS\ ゴシック,sans-serif}html[lang=zh-tw] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang TC,Microsoft JhengHei,微軟正黑,sans-serif}html[lang=zh-cn] body{font-family:Source Sans Pro,Helvetica,Arial,PingFang SC,Microsoft YaHei,微软雅黑,sans-serif}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}abbr[data-original-title],abbr[title]{cursor:help}body.modal-open{overflow-y:auto;padding-right:0!important}
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js" integrity="sha256-3Jy/GbSLrg0o9y5Z5n1uw0qxZECH7C6OQpVBgNFYa0g=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js" integrity="sha256-g6iAfvZp+nDQ2TdTR/VVKJf3bGro4ub5fvWSWVRi2NE=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.9/es5-shim.min.js" integrity="sha256-8E4Is26QH0bD52WoQpcB+R/tcWQtpzlCojrybUd7Mxo=" crossorigin="anonymous"></script>
<![endif]-->
</head>
<body>
<div id="doc" class="markdown-body container-fluid comment-inner comment-enabled" data-hard-breaks="true" style=""><h1 id="Blockchain-Virtual-Worlds" style=""><a class="anchor hidden-xs" href="#Blockchain-Virtual-Worlds" title="Blockchain-Virtual-Worlds"><span class="octicon octicon-link"></span></a><span>Blockchain Virtual Worlds</span></h1><h6 id="tags-M3"><a class="anchor hidden-xs" href="#tags-M3" title="tags-M3"><span class="octicon octicon-link"></span></a><span>tags: </span><code>M3</code></h6><p><strong><span>Proposal: </span><a href="https://github.com/M3-org/proposals/issues/9" target="_blank" rel="noopener"><span>https://github.com/M3-org/proposals/issues/9</span></a></strong><br>
<strong><span>Video: </span><a href="https://www.youtube.com/watch?v=hv9Cl7yt-60" target="_blank" rel="noopener"><span>https://www.youtube.com/watch?v=hv9Cl7yt-60</span></a></strong></p><p><img src="https://i.imgur.com/2eRPENI.png" alt=""></p><p><span>The aim for this field trip was to explore each platform, have meaningful discussions, and document our journey to share insight with the wider Metaverse building community.</span></p><p><span>We were fortunate for the lead developers of Cryptovoxels and Somnium Space to join our field trip. It’s always great when platform developers are able to take a break to explore other projects.</span></p><p><strong><span>Route: </span><a href="https://decentraland.org" target="_blank" rel="noopener"><span>Decentraland</span></a><span> </span><img class="emoji" alt=":arrow_right:" src="https://cdn.jsdelivr.net/npm/@hackmd/[email protected]/dist/images/basic/arrow_right.png"><span> </span><a href="https://cryptovoxels.com" target="_blank" rel="noopener"><span>Cryptovoxels</span></a><span> </span><img class="emoji" alt=":arrow_right:" src="https://cdn.jsdelivr.net/npm/@hackmd/[email protected]/dist/images/basic/arrow_right.png"><span> </span><a href="https://somniumspace.com" target="_blank" rel="noopener"><span>Somnium Space</span></a></strong></p><p><span>To coordinate, we all hopped into a Discord voice channel to stay connected.</span></p><iframe width="100%" height="400" src="https://www.youtube.com/embed/hv9Cl7yt-60" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe><hr><p><strong><span>Discussion Questions</span></strong></p><ul>
<li><span>Whats this platform built on?</span></li>
<li><span>How fast did it load?</span></li>
<li><span>What do you start out with?</span></li>
<li><span>How do you move around?</span></li>
<li><span>How fun is it to run around and jump?</span></li>
<li><span>General observations around the world</span></li>
</ul><hr><h2 id="Decentraland" style=""><a class="anchor hidden-xs" href="#Decentraland" title="Decentraland"><span class="octicon octicon-link"></span></a><span>Decentraland</span></h2><p><img src="https://i.imgur.com/Q0UVnhR.jpg" alt=""></p><p><strong><span>Website: </span><a href="https://decentraland.org/" target="_blank" rel="noopener"><span>https://decentraland.org/</span></a></strong><br>
<strong><span>Twitter: </span><a href="https://twitter.com/decentraland" target="_blank" rel="noopener"><span>https://twitter.com/decentraland</span></a></strong><br>
<strong><span>Github: </span><a href="https://github.com/decentraland" target="_blank" rel="noopener"><span>https://github.com/decentraland</span></a></strong><br>
<strong><span>Reddit: </span><a href="https://www.reddit.com/r/decentraland/" target="_blank" rel="noopener"><span>https://www.reddit.com/r/decentraland/</span></a></strong><br>
<strong><span>Discord: </span><a href="https://dcl.gg/discord" target="_blank" rel="noopener"><span>https://dcl.gg/discord</span></a></strong><br>
<strong><span>Marketcap: </span><a href="https://coinmarketcap.com/currencies/decentraland/" target="_blank" rel="noopener"><span>https://coinmarketcap.com/currencies/decentraland/</span></a></strong></p><hr><p><strong><span>Video starts here: </span><a href="https://youtu.be/hv9Cl7yt-60?t=199" target="_blank" rel="noopener"><span>https://youtu.be/hv9Cl7yt-60?t=199</span></a></strong></p><p><span>Decentraland’s team is mostly based in Argentina. The founders raised 86,206 ETH or $26,203,082 USD at press time during an ICO that lasted about 30 seconds on August 17th, 2017. The timing was extremely fortunate as the price of Ethereum soared from $300 during the time of ICO to over $1300 in 4 months, boosting the value of their ETH war chest well over $100M at one point.</span></p><p><span>Their main client is built on the non-free Unity game engine and it uses Typescript for the SDK. DCL has an in-game currency called MANA, an ERC20 token with total supply of 2,197,524,119 and a marketcap of 57M as of the time of writing.</span></p><p><span>The value of MANA is separate from the Ethereum from the ICO, giving DCL additional funding leverage.</span></p><p><span>MANA is used to purchase Decentraland NFTs such as LAND, wearables, and names. Developers can monetize their experiences on LAND using the SDK and MANA.</span></p><p><span>Loading took about a minute from entering the URL to being able to walk around in-game, you can try it out here: </span><a href="https://play.decentraland.org" target="_blank" rel="noopener"><span>https://play.decentraland.org</span></a></p><p><span>One of the group members said it would be useful to have more communication about what is happening when things are loading while walking around. Currently we just see transparent greens walls and it was not immediately clear what that meant.</span></p><p><span>Guests are given a generated user name and randomized avatar. Guest avatars look different per client so we had to go by name to tell who was who. There was one public text channel to communicate on and messages didn’t float about avatars while talking which made it sometimes difficult to tell who was talking.</span></p><p><span>We used the mouse to look around and WASD keypad to move, pretty standard. Spacebar jumps but the Shift key slows a person down instead of the usual speed up / run.</span></p><p><span>When walking around Decentraland and things are loading in, there’s a green barrier that will block you until the scene has finished loading.</span></p><p><span>Decentraland doesn’t support flying globally so walking is the main way to get around town. There are commands for teleporting to different places but it will usually take a minute of loading in between hops.</span></p><hr><h2 id="Cryptovoxels" style=""><a class="anchor hidden-xs" href="#Cryptovoxels" title="Cryptovoxels"><span class="octicon octicon-link"></span></a><span>Cryptovoxels</span></h2><p><img src="https://i.imgur.com/l07WeG5.jpg" alt=""></p><p><strong><span>Website: </span><a href="https://cryptovoxels.com/" target="_blank" rel="noopener"><span>https://cryptovoxels.com/</span></a><br>
<span>Twitter: </span><a href="https://twitter.com/cryptovoxels" target="_blank" rel="noopener"><span>https://twitter.com/cryptovoxels</span></a><br>
<span>Github: </span><a href="https://github.com/cryptovoxels" target="_blank" rel="noopener"><span>https://github.com/cryptovoxels</span></a><br>
<span>Reddit: </span><a href="https://www.reddit.com/r/cryptovoxels/" target="_blank" rel="noopener"><span>https://www.reddit.com/r/cryptovoxels/</span></a><br>
<span>Discord: </span><a href="https://discord.gg/22Sb9v7" target="_blank" rel="noopener"><span>https://discord.gg/22Sb9v7</span></a><br>
<span>Marketcap: </span><a href="https://opensea.io/category/cryptovoxels" target="_blank" rel="noopener"><span>https://opensea.io/category/cryptovoxels</span></a></strong></p><hr><p><strong><span>Video starts here: </span><a href="https://youtu.be/hv9Cl7yt-60?t=1449" target="_blank" rel="noopener"><span>https://youtu.be/hv9Cl7yt-60?t=1449</span></a></strong></p><p><span>Cryptovoxels is founded by Ben Nolan who is based in New Zealand. built on </span><a href="https://github.com/babylonjs" target="_blank" rel="noopener"><span>Babylonjs</span></a><span>, an open source web based rendering game engine developed by Microsoft. Jumping into the world was pretty fast, can try it out for yourself here: </span><a href="https://www.cryptovoxels.com/play" target="_blank" rel="noopener"><span>https://www.cryptovoxels.com/play</span></a></p><p><span>Guest users are given a sprite avatar, but because of a bug right before our event everybody was given a sprite avatar. The sprite avatars look like plain mannequin models in 1 dimension, similar to NPCs in classic Doom.</span></p><p><span>Movement was used pointerlock mouse and WASD plus shift to run faster. We could teleport instantly to someone else in the chatbox by clicking on their name, which made it easy to group up. There is also the option to click links in the chat.</span></p><p><span>Walking around Origin City is like a experiencing a fusion of Minecraft and Geocities simultaneously. There is art in every direction, much of it is tokenized on the Ethereum blockchain.</span></p><p><span>One of the big differences between Cryptovoxels and the other platforms is that in CV the builder and the explorer are part of the same client. Whenever you press tab on a parcel that you own or have collaborator rights on (including sandbox parcels) to edit like a no-code website builder. You can build and hang out with your friends or collaborate together in real-time.</span></p><p><span>Another feature that comes out of the gate with Cryptovoxels is the ability to link to different parcels or out to external sites on the web. Clicking a link to another parcel within CV will teleport you instantly, while clicking a link to an external website will show a warning to confirm you want to leave.</span></p><hr><h2 id="Somnium-Space" style=""><a class="anchor hidden-xs" href="#Somnium-Space" title="Somnium-Space"><span class="octicon octicon-link"></span></a><span>Somnium Space</span></h2><p><img src="https://i.imgur.com/W3PrkFK.png" alt=""></p><p><strong><span>Website: </span><a href="https://somniumspace.com/" target="_blank" rel="noopener"><span>https://somniumspace.com/</span></a><br>
<span>Twitter: </span><a href="https://twitter.com/somniumspace" target="_blank" rel="noopener"><span>https://twitter.com/somniumspace</span></a><br>
<span>Github: </span><a href="https://github.com/somniumspace" target="_blank" rel="noopener"><span>https://github.com/somniumspace</span></a><span> (0 repos)</span><br>
<span>Reddit: </span><a href="https://www.reddit.com/r/SomniumNews/" target="_blank" rel="noopener"><span>https://www.reddit.com/r/SomniumNews/</span></a><br>
<span>Discord: </span><a href="https://discordapp.com/invite/somniumspace" target="_blank" rel="noopener"><span>https://discordapp.com/invite/somniumspace</span></a><br>
<span>Marketcap: </span><a href="https://opensea.io/assets/somnium-space" target="_blank" rel="noopener"><span>https://opensea.io/assets/somnium-space</span></a></strong></p><hr><p><span>Somnium Space is single instance persistent virtual world shaped by its users. It’s also made with the non-free Unity game engine. Out of the various blockchain virtual worlds we tested, it is the only platform that has day/night cycles and real-time shadows. We used their native desktop client in 2D and in VR mode, which you can install from steam here: </span><a href="https://store.steampowered.com/app/875480/Somnium" target="_blank" rel="noopener"><span>https://store.steampowered.com/app/875480/Somnium</span></a><span>_</span><span>Space</span><span>_</span><span>VR/</span></p><p><span>One of the big differences from the other blockchain worlds was the lack of text chat in Somnium Space. There was not much UI, but perhaps this may come down the road since the 2D desktop support was brand new.</span></p><p><span>The island is pretty big as things are spaced about a 6km distance. We had a little trouble figuring out how to open the menu or to go in first person view.</span></p><p><span>The Somnium Space </span><a href="https://www.youtube.com/watch?v=O8l4XA4R_nU&feature=youtu.be" target="_blank" rel="noopener"><span>Builder</span></a><span> features a drag n’ drop interface. There’s also a Unity SDK for uploading your own custom avatar although no in-game mirrors yet to view yourself in VR.</span></p><p><span>The terrain came with a lush interactive soundscape. When you jump in the water, it sounds like you’re swimming in water. Only a couple things would load in simultaneously but things were also spread more apart.</span></p><p><span>Somnium Space comes with a pretty good VR experience. There’s a tablet in VR mode to interact with a menu.</span></p><p><span>When we had the field trip, the 2D desktop client was brand new. There is no UI so it was sorta confusing at first to figure out how to change settings.</span></p><p><span>Somnium Space is PC only so Mac computer users had to follow along on Twitch. It’s unclear if a Webgl client for Somnium Space will come out although it is certainly in the realm of possibilities.</span></p><hr><h2 id="Data" style=""><a class="anchor hidden-xs" href="#Data" title="Data"><span class="octicon octicon-link"></span></a><span>Data</span></h2><p><strong><span>Supply of LAND (June 2020)</span></strong></p><p><img src="https://i.imgur.com/in9Q787.png" alt=""></p><p><strong><span>Volume in USD</span></strong></p><p><img src="https://i.imgur.com/tzudrov.png" alt=""></p><p><strong><span>Average Price of LAND (All-time)</span></strong></p><p><img src="https://i.imgur.com/GXDDC7C.png" alt=""></p><p><span>Source: </span><a href="https://nonfungible.com/" target="_blank" rel="noopener"><span>https://nonfungible.com/</span></a></p><p><strong><span>Daily Active Users between platforms, May 2020</span></strong></p><p><img src="https://i.imgur.com/NyHelcy.png" alt=""></p><p><strong><span>Google Trends between the blockchain VR platforms</span></strong></p><p><img src="https://i.imgur.com/Pob9HHr.png" alt=""></p><p><strong><span>Google Trends comparing the blockchain VR platforms to popular virtual worlds</span></strong></p><p><img src="https://i.imgur.com/O7LsdLY.png" alt=""></p><p><strong><span>Comparing how active founders are on their Discord servers</span></strong></p><p><img src="https://i.imgur.com/2VRJi4p.png" alt=""></p><p><strong><a href="http://DCLNodes.io" target="_blank" rel="noopener"><span>DCLNodes.io</span></a><span>: Real-time view of how many users are logged in Decentraland</span></strong></p><p><img src="https://i.imgur.com/4vCtlPC.png" alt=""></p><p><strong><span>Data dump of Decentraland and Cryptovoxels during April 2020</span></strong></p><p><img src="https://i.imgur.com/F4W32BR.png" alt=""></p></div>
<div class="ui-toc dropup unselectable hidden-print" style="display:none;">
<div class="pull-right dropdown">
<a id="tocLabel" class="ui-toc-label btn btn-default" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false" title="Table of content">
<i class="fa fa-bars"></i>
</a>
<ul id="ui-toc" class="ui-toc-dropdown dropdown-menu" aria-labelledby="tocLabel">
<div class="toc"><ul class="nav">
<li class=""><a href="#Blockchain-Virtual-Worlds" title="Blockchain Virtual Worlds">Blockchain Virtual Worlds</a><ul class="nav">
<li><a href="#Decentraland" title="Decentraland">Decentraland</a></li>
<li><a href="#Cryptovoxels" title="Cryptovoxels">Cryptovoxels</a></li>
<li><a href="#Somnium-Space" title="Somnium Space">Somnium Space</a></li>
<li><a href="#Data" title="Data">Data</a></li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</ul>
</div>
</div>
<div id="ui-toc-affix" class="ui-affix-toc ui-toc-dropdown unselectable hidden-print" data-spy="affix" style="top:17px;display:none;" null null>
<div class="toc"><ul class="nav">
<li class=""><a href="#Blockchain-Virtual-Worlds" title="Blockchain Virtual Worlds">Blockchain Virtual Worlds</a><ul class="nav">
<li><a href="#Decentraland" title="Decentraland">Decentraland</a></li>
<li><a href="#Cryptovoxels" title="Cryptovoxels">Cryptovoxels</a></li>
<li><a href="#Somnium-Space" title="Somnium Space">Somnium Space</a></li>
<li><a href="#Data" title="Data">Data</a></li>
</ul>
</li>
</ul>
</div><div class="toc-menu"><a class="expand-toggle" href="#">Expand all</a><a class="back-to-top" href="#">Back to top</a><a class="go-to-bottom" href="#">Go to bottom</a></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gist-embed/2.6.0/gist-embed.min.js" integrity="sha256-KyF2D6xPIJUW5sUDSs93vWyZm+1RzIpKCexxElmxl8g=" crossorigin="anonymous" defer></script>
<script>
var markdown = $(".markdown-body");
//smooth all hash trigger scrolling
function smoothHashScroll() {
var hashElements = $("a[href^='#']").toArray();
for (var i = 0; i < hashElements.length; i++) {
var element = hashElements[i];
var $element = $(element);
var hash = element.hash;
if (hash) {
$element.on('click', function (e) {
// store hash
var hash = this.hash;
if ($(hash).length <= 0) return;
// prevent default anchor click behavior
e.preventDefault();
// animate
$('body, html').stop(true, true).animate({
scrollTop: $(hash).offset().top
}, 100, "linear", function () {
// when done, add hash to url
// (default click behaviour)
window.location.hash = hash;
});
});
}
}
}
smoothHashScroll();
var toc = $('.ui-toc');
var tocAffix = $('.ui-affix-toc');
var tocDropdown = $('.ui-toc-dropdown');
//toc
tocDropdown.click(function (e) {
e.stopPropagation();
});
var enoughForAffixToc = true;
function generateScrollspy() {
$(document.body).scrollspy({
target: ''
});
$(document.body).scrollspy('refresh');
if (enoughForAffixToc) {
toc.hide();
tocAffix.show();
} else {
tocAffix.hide();
toc.show();
}
$(document.body).scroll();
}
function windowResize() {
//toc right
var paddingRight = parseFloat(markdown.css('padding-right'));
var right = ($(window).width() - (markdown.offset().left + markdown.outerWidth() - paddingRight));
toc.css('right', right + 'px');
//affix toc left
var newbool;
var rightMargin = (markdown.parent().outerWidth() - markdown.outerWidth()) / 2;
//for ipad or wider device
if (rightMargin >= 133) {
newbool = true;
var affixLeftMargin = (tocAffix.outerWidth() - tocAffix.width()) / 2;
var left = markdown.offset().left + markdown.outerWidth() - affixLeftMargin;
tocAffix.css('left', left + 'px');
} else {
newbool = false;
}
if (newbool != enoughForAffixToc) {
enoughForAffixToc = newbool;
generateScrollspy();
}
}
$(window).resize(function () {
windowResize();
});
$(document).ready(function () {
windowResize();
generateScrollspy();
});
//remove hash
function removeHash() {
window.location.hash = '';
}
var backtotop = $('.back-to-top');
var gotobottom = $('.go-to-bottom');
backtotop.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToTop)
scrollToTop();
removeHash();
});
gotobottom.click(function (e) {
e.preventDefault();
e.stopPropagation();
if (scrollToBottom)
scrollToBottom();
removeHash();
});
var toggle = $('.expand-toggle');
var tocExpand = false;
checkExpandToggle();
toggle.click(function (e) {
e.preventDefault();
e.stopPropagation();
tocExpand = !tocExpand;
checkExpandToggle();
})
function checkExpandToggle () {
var toc = $('.ui-toc-dropdown .toc');
var toggle = $('.expand-toggle');
if (!tocExpand) {
toc.removeClass('expand');
toggle.text('Expand all');
} else {
toc.addClass('expand');
toggle.text('Collapse all');
}
}
function scrollToTop() {
$('body, html').stop(true, true).animate({
scrollTop: 0
}, 100, "linear");
}
function scrollToBottom() {
$('body, html').stop(true, true).animate({
scrollTop: $(document.body)[0].scrollHeight
}, 100, "linear");
}
</script>
</body>
</html>