Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: example/todomvc/test/expected/todomvc_markdone_test.html.txt

Issue 20863002: Introduce boot.js: this finally makes it possible to load and run Todomvc (Closed) Base URL: git@github.com:dart-lang/web-ui.git@master
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 Content-Type: text/plain 1 Content-Type: text/plain
2 <html lang="en"><head><style>template { display: none; }</style> 2 <html lang="en"><head><style>template { display: none; }</style>
3 <!-- 3 <!--
4 This test runs the TodoMVC app, adds a few todos, marks some as done 4 This test runs the TodoMVC app, adds a few todos, marks some as done
5 programatically, and clicks on a checkbox to mark others via the UI. 5 programatically, and clicks on a checkbox to mark others via the UI.
6 --> 6 -->
7 <meta charset="utf-8"> 7 <meta charset="utf-8">
8 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 8 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9 9
10 <link rel="stylesheet" href="../web/base.css"> 10 <link rel="stylesheet" href="../../../web/base.css">
11 <script src="../../packages/polymer/testing/testing.js"></script> 11 <script src="../../packages/polymer/testing/testing.js"></script>
12 <title>Dart • TodoMVC</title> 12 <title>Dart • TodoMVC</title>
13 <link rel="stylesheet" type="text/css" href="todomvc_markdone_test.html.css"><st yle>template, 13 <style>template,
14 thead[template], 14 thead[template],
15 tbody[template], 15 tbody[template],
16 tfoot[template], 16 tfoot[template],
17 th[template], 17 th[template],
18 tr[template], 18 tr[template],
19 td[template], 19 td[template],
20 caption[template], 20 caption[template],
21 colgroup[template], 21 colgroup[template],
22 col[template], 22 col[template],
23 option[template] { 23 option[template] {
24 display: none; 24 display: none;
25 }</style></head><body><polymer-element name="todo-row" extends="li" attributes=" todo"> 25 }</style></head><body><polymer-element name="todo-row" extends="li" attributes=" todo">
26 <template> 26 <template>
27 27
28 <div class="todo-row_todo-item"> 28 <style>
29 <input class="todo-row_toggle" type="checkbox" checked="{{todo.done}}"> 29 .todo-item {
30 position: relative;
31 font-size: 24px;
32 border-bottom: 1px dotted #ccc;
33 }
34 .todo-item.editing {
35 border-bottom: none;
36 padding: 0;
37 }
38 .todo-item.completed [is=editable-label] {
39 color: #a9a9a9;
40 text-decoration: line-through;
41 }
42 .todo-item .toggle {
43 text-align: center;
44 width: 40px;
45 height: auto;
46 position: absolute;
47 top: 0;
48 bottom: 0;
49 margin: auto 0;
50 border: none;
51 -webkit-appearance: none;
52 -ms-appearance: none;
53 -o-appearance: none;
54 appearance: none;
55 }
56 .todo-item .toggle:after {
57 content: "✔";
58 line-height: 43px;
59 font-size: 20px;
60 color: #d9d9d9;
61 text-shadow: 0 -1px 0 #bfbfbf;
62 }
63 .todo-item .toggle:checked:after {
64 color: #85ada7;
65 text-shadow: 0 1px 0 #669991;
66 bottom: 1px;
67 position: relative;
68 }
69 .todo-item .destroy {
70 display: none;
71 position: absolute;
72 top: 0;
73 right: 10px;
74 bottom: 0;
75 width: 40px;
76 height: 40px;
77 margin: auto 0;
78 font-size: 22px;
79 color: #a88a8a;
80 -webkit-transition: all 0.2s;
81 -moz-transition: all 0.2s;
82 -ms-transition: all 0.2s;
83 -o-transition: all 0.2s;
84 transition: all 0.2s;
85 }
86 .todo-item .destroy:hover {
87 text-shadow: 0 0 1px #000, 0 0 10px rgba(199, 107, 107, 0.8);
88 -webkit-transform: scale(1.3);
89 -moz-transform: scale(1.3);
90 -ms-transform: scale(1.3);
91 -o-transform: scale(1.3);
92 transform: scale(1.3);
93 }
94 .todo-item .destroy:after {
95 content: "✖";
96 }
97 .todo-item:hover .destroy {
98 display: block;
99 }
100 .todo-item.editing .destroy, .todo-item.editing .toggle {
101 display: none;
102 }
103 .todo-item.editing:last-child {
104 margin-bottom: -1px;
105 } @media screen AND (-webkit-min-device-pixel-ratio:0) {
106 .todo-item .toggle {
107 background: none;
108 }
109 #todo-item .toggle {
110 height: 40px;
111 }
112 }
113 </style><div class="todo-item">
114 <input class="toggle" type="checkbox" checked="{{todo.done}}">
30 <div is="editable-label" id="label" value="{{todo.task}}"></div> 115 <div is="editable-label" id="label" value="{{todo.task}}"></div>
31 <button class="todo-row_destroy" on-click="removeTodo"></button> 116 <button class="destroy" on-click="removeTodo"></button>
32 </div> 117 </div>
33 </template> 118 </template>
34 119
35 </polymer-element> 120 </polymer-element>
36 <polymer-element name="todo-app"> 121 <polymer-element name="todo-app">
37 <template> 122 <template>
38 <section id="todoapp"> 123 <section id="todoapp">
39 <header id="header"> 124 <header id="header">
40 <h1 class="title">todos</h1> 125 <h1 class="title">todos</h1>
41 <form on-submit="addTodo"> 126 <form on-submit="addTodo">
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 <input id="new-todo" placeholder="What needs to be done?" autofocus="" o n-change="addTodo"> 192 <input id="new-todo" placeholder="What needs to be done?" autofocus="" o n-change="addTodo">
108 </form> 193 </form>
109 </header> 194 </header>
110 <section id="main"> 195 <section id="main">
111 <input id="toggle-all" type="checkbox"> 196 <input id="toggle-all" type="checkbox">
112 <label for="toggle-all"></label> 197 <label for="toggle-all"></label>
113 <ul id="todo-list"> 198 <ul id="todo-list">
114 <template repeat="{{app.visibleTodos}}"> 199 <template repeat="{{app.visibleTodos}}">
115 <li is="todo-row" todo="{{}}"></li> 200 <li is="todo-row" todo="{{}}"></li>
116 </template> 201 </template>
117 <li is="todo-row" todo="{{}}"><shadow-root> 202 <li is="todo-row" todo="{{}}"><shadow-root>
118 203
119 <div class="todo-row_todo-item"> 204 <style>
120 <input class="todo-row_toggle" type="checkbox"> 205 .todo-item {
206 position: relative;
207 font-size: 24px;
208 border-bottom: 1px dotted #ccc;
209 }
210 .todo-item.editing {
211 border-bottom: none;
212 padding: 0;
213 }
214 .todo-item.completed [is=editable-label] {
215 color: #a9a9a9;
216 text-decoration: line-through;
217 }
218 .todo-item .toggle {
219 text-align: center;
220 width: 40px;
221 height: auto;
222 position: absolute;
223 top: 0;
224 bottom: 0;
225 margin: auto 0;
226 border: none;
227 -webkit-appearance: none;
228 -ms-appearance: none;
229 -o-appearance: none;
230 appearance: none;
231 }
232 .todo-item .toggle:after {
233 content: "✔";
234 line-height: 43px;
235 font-size: 20px;
236 color: #d9d9d9;
237 text-shadow: 0 -1px 0 #bfbfbf;
238 }
239 .todo-item .toggle:checked:after {
240 color: #85ada7;
241 text-shadow: 0 1px 0 #669991;
242 bottom: 1px;
243 position: relative;
244 }
245 .todo-item .destroy {
246 display: none;
247 position: absolute;
248 top: 0;
249 right: 10px;
250 bottom: 0;
251 width: 40px;
252 height: 40px;
253 margin: auto 0;
254 font-size: 22px;
255 color: #a88a8a;
256 -webkit-transition: all 0.2s;
257 -moz-transition: all 0.2s;
258 -ms-transition: all 0.2s;
259 -o-transition: all 0.2s;
260 transition: all 0.2s;
261 }
262 .todo-item .destroy:hover {
263 text-shadow: 0 0 1px #000, 0 0 10px rgba(199, 107, 107, 0.8);
264 -webkit-transform: scale(1.3);
265 -moz-transform: scale(1.3);
266 -ms-transform: scale(1.3);
267 -o-transform: scale(1.3);
268 transform: scale(1.3);
269 }
270 .todo-item .destroy:after {
271 content: "✖";
272 }
273 .todo-item:hover .destroy {
274 display: block;
275 }
276 .todo-item.editing .destroy, .todo-item.editing .toggle {
277 display: none;
278 }
279 .todo-item.editing:last-child {
280 margin-bottom: -1px;
281 } @media screen AND (-webkit-min-device-pixel-ratio:0) {
282 .todo-item .toggle {
283 background: none;
284 }
285 #todo-item .toggle {
286 height: 40px;
287 }
288 }
289 </style><div class="todo-item">
290 <input class="toggle" type="checkbox">
121 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root> 291 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root>
122 <template bind="" if="{{notEditing}}"> 292 <template bind="" if="{{notEditing}}">
123 <label class="edit-label" on-double-click="edit">{{value}}</label> 293 <label class="edit-label" on-double-click="edit">{{value}}</label>
124 </template> 294 </template>
125 <label class="edit-label" on-double-click="edit">one (unchecked)</label> 295 <label class="edit-label" on-double-click="edit">one (unchecked)</label>
126 296
127 <template bind="" if="{{editing}}"> 297 <template bind="" if="{{editing}}">
128 <form on-submit="update"> 298 <form on-submit="update">
129 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel"> 299 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel">
130 </form> 300 </form>
131 </template> 301 </template>
132 </shadow-root></div> 302 </shadow-root></div>
133 <button class="todo-row_destroy" on-click="removeTodo"></button> 303 <button class="destroy" on-click="removeTodo"></button>
134 </div> 304 </div>
135 </shadow-root></li> 305 </shadow-root></li>
136 306
137 <li is="todo-row" todo="{{}}"><shadow-root> 307 <li is="todo-row" todo="{{}}"><shadow-root>
138 308
139 <div class="todo-row_todo-item"> 309 <style>
140 <input class="todo-row_toggle" type="checkbox"> 310 .todo-item {
311 position: relative;
312 font-size: 24px;
313 border-bottom: 1px dotted #ccc;
314 }
315 .todo-item.editing {
316 border-bottom: none;
317 padding: 0;
318 }
319 .todo-item.completed [is=editable-label] {
320 color: #a9a9a9;
321 text-decoration: line-through;
322 }
323 .todo-item .toggle {
324 text-align: center;
325 width: 40px;
326 height: auto;
327 position: absolute;
328 top: 0;
329 bottom: 0;
330 margin: auto 0;
331 border: none;
332 -webkit-appearance: none;
333 -ms-appearance: none;
334 -o-appearance: none;
335 appearance: none;
336 }
337 .todo-item .toggle:after {
338 content: "✔";
339 line-height: 43px;
340 font-size: 20px;
341 color: #d9d9d9;
342 text-shadow: 0 -1px 0 #bfbfbf;
343 }
344 .todo-item .toggle:checked:after {
345 color: #85ada7;
346 text-shadow: 0 1px 0 #669991;
347 bottom: 1px;
348 position: relative;
349 }
350 .todo-item .destroy {
351 display: none;
352 position: absolute;
353 top: 0;
354 right: 10px;
355 bottom: 0;
356 width: 40px;
357 height: 40px;
358 margin: auto 0;
359 font-size: 22px;
360 color: #a88a8a;
361 -webkit-transition: all 0.2s;
362 -moz-transition: all 0.2s;
363 -ms-transition: all 0.2s;
364 -o-transition: all 0.2s;
365 transition: all 0.2s;
366 }
367 .todo-item .destroy:hover {
368 text-shadow: 0 0 1px #000, 0 0 10px rgba(199, 107, 107, 0.8);
369 -webkit-transform: scale(1.3);
370 -moz-transform: scale(1.3);
371 -ms-transform: scale(1.3);
372 -o-transform: scale(1.3);
373 transform: scale(1.3);
374 }
375 .todo-item .destroy:after {
376 content: "✖";
377 }
378 .todo-item:hover .destroy {
379 display: block;
380 }
381 .todo-item.editing .destroy, .todo-item.editing .toggle {
382 display: none;
383 }
384 .todo-item.editing:last-child {
385 margin-bottom: -1px;
386 } @media screen AND (-webkit-min-device-pixel-ratio:0) {
387 .todo-item .toggle {
388 background: none;
389 }
390 #todo-item .toggle {
391 height: 40px;
392 }
393 }
394 </style><div class="todo-item">
395 <input class="toggle" type="checkbox">
141 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root> 396 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root>
142 <template bind="" if="{{notEditing}}"> 397 <template bind="" if="{{notEditing}}">
143 <label class="edit-label" on-double-click="edit">{{value}}</label> 398 <label class="edit-label" on-double-click="edit">{{value}}</label>
144 </template> 399 </template>
145 <label class="edit-label" on-double-click="edit">two (unchecked)</label> 400 <label class="edit-label" on-double-click="edit">two (unchecked)</label>
146 401
147 <template bind="" if="{{editing}}"> 402 <template bind="" if="{{editing}}">
148 <form on-submit="update"> 403 <form on-submit="update">
149 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel"> 404 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel">
150 </form> 405 </form>
151 </template> 406 </template>
152 </shadow-root></div> 407 </shadow-root></div>
153 <button class="todo-row_destroy" on-click="removeTodo"></button> 408 <button class="destroy" on-click="removeTodo"></button>
154 </div> 409 </div>
155 </shadow-root></li> 410 </shadow-root></li>
156 411
157 <li is="todo-row" todo="{{}}"><shadow-root> 412 <li is="todo-row" todo="{{}}"><shadow-root>
158 413
159 <div class="todo-row_todo-item todo-row_completed"> 414 <style>
160 <input class="todo-row_toggle" type="checkbox"> 415 .todo-item {
416 position: relative;
417 font-size: 24px;
418 border-bottom: 1px dotted #ccc;
419 }
420 .todo-item.editing {
421 border-bottom: none;
422 padding: 0;
423 }
424 .todo-item.completed [is=editable-label] {
425 color: #a9a9a9;
426 text-decoration: line-through;
427 }
428 .todo-item .toggle {
429 text-align: center;
430 width: 40px;
431 height: auto;
432 position: absolute;
433 top: 0;
434 bottom: 0;
435 margin: auto 0;
436 border: none;
437 -webkit-appearance: none;
438 -ms-appearance: none;
439 -o-appearance: none;
440 appearance: none;
441 }
442 .todo-item .toggle:after {
443 content: "✔";
444 line-height: 43px;
445 font-size: 20px;
446 color: #d9d9d9;
447 text-shadow: 0 -1px 0 #bfbfbf;
448 }
449 .todo-item .toggle:checked:after {
450 color: #85ada7;
451 text-shadow: 0 1px 0 #669991;
452 bottom: 1px;
453 position: relative;
454 }
455 .todo-item .destroy {
456 display: none;
457 position: absolute;
458 top: 0;
459 right: 10px;
460 bottom: 0;
461 width: 40px;
462 height: 40px;
463 margin: auto 0;
464 font-size: 22px;
465 color: #a88a8a;
466 -webkit-transition: all 0.2s;
467 -moz-transition: all 0.2s;
468 -ms-transition: all 0.2s;
469 -o-transition: all 0.2s;
470 transition: all 0.2s;
471 }
472 .todo-item .destroy:hover {
473 text-shadow: 0 0 1px #000, 0 0 10px rgba(199, 107, 107, 0.8);
474 -webkit-transform: scale(1.3);
475 -moz-transform: scale(1.3);
476 -ms-transform: scale(1.3);
477 -o-transform: scale(1.3);
478 transform: scale(1.3);
479 }
480 .todo-item .destroy:after {
481 content: "✖";
482 }
483 .todo-item:hover .destroy {
484 display: block;
485 }
486 .todo-item.editing .destroy, .todo-item.editing .toggle {
487 display: none;
488 }
489 .todo-item.editing:last-child {
490 margin-bottom: -1px;
491 } @media screen AND (-webkit-min-device-pixel-ratio:0) {
492 .todo-item .toggle {
493 background: none;
494 }
495 #todo-item .toggle {
496 height: 40px;
497 }
498 }
499 </style><div class="todo-item completed">
500 <input class="toggle" type="checkbox">
161 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root> 501 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root>
162 <template bind="" if="{{notEditing}}"> 502 <template bind="" if="{{notEditing}}">
163 <label class="edit-label" on-double-click="edit">{{value}}</label> 503 <label class="edit-label" on-double-click="edit">{{value}}</label>
164 </template> 504 </template>
165 <label class="edit-label" on-double-click="edit">three (checked)</label> 505 <label class="edit-label" on-double-click="edit">three (checked)</label>
166 506
167 <template bind="" if="{{editing}}"> 507 <template bind="" if="{{editing}}">
168 <form on-submit="update"> 508 <form on-submit="update">
169 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel"> 509 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel">
170 </form> 510 </form>
171 </template> 511 </template>
172 </shadow-root></div> 512 </shadow-root></div>
173 <button class="todo-row_destroy" on-click="removeTodo"></button> 513 <button class="destroy" on-click="removeTodo"></button>
174 </div> 514 </div>
175 </shadow-root></li> 515 </shadow-root></li>
176 516
177 <li is="todo-row" todo="{{}}"><shadow-root> 517 <li is="todo-row" todo="{{}}"><shadow-root>
178 518
179 <div class="todo-row_todo-item todo-row_completed"> 519 <style>
180 <input class="todo-row_toggle" type="checkbox"> 520 .todo-item {
521 position: relative;
522 font-size: 24px;
523 border-bottom: 1px dotted #ccc;
524 }
525 .todo-item.editing {
526 border-bottom: none;
527 padding: 0;
528 }
529 .todo-item.completed [is=editable-label] {
530 color: #a9a9a9;
531 text-decoration: line-through;
532 }
533 .todo-item .toggle {
534 text-align: center;
535 width: 40px;
536 height: auto;
537 position: absolute;
538 top: 0;
539 bottom: 0;
540 margin: auto 0;
541 border: none;
542 -webkit-appearance: none;
543 -ms-appearance: none;
544 -o-appearance: none;
545 appearance: none;
546 }
547 .todo-item .toggle:after {
548 content: "✔";
549 line-height: 43px;
550 font-size: 20px;
551 color: #d9d9d9;
552 text-shadow: 0 -1px 0 #bfbfbf;
553 }
554 .todo-item .toggle:checked:after {
555 color: #85ada7;
556 text-shadow: 0 1px 0 #669991;
557 bottom: 1px;
558 position: relative;
559 }
560 .todo-item .destroy {
561 display: none;
562 position: absolute;
563 top: 0;
564 right: 10px;
565 bottom: 0;
566 width: 40px;
567 height: 40px;
568 margin: auto 0;
569 font-size: 22px;
570 color: #a88a8a;
571 -webkit-transition: all 0.2s;
572 -moz-transition: all 0.2s;
573 -ms-transition: all 0.2s;
574 -o-transition: all 0.2s;
575 transition: all 0.2s;
576 }
577 .todo-item .destroy:hover {
578 text-shadow: 0 0 1px #000, 0 0 10px rgba(199, 107, 107, 0.8);
579 -webkit-transform: scale(1.3);
580 -moz-transform: scale(1.3);
581 -ms-transform: scale(1.3);
582 -o-transform: scale(1.3);
583 transform: scale(1.3);
584 }
585 .todo-item .destroy:after {
586 content: "✖";
587 }
588 .todo-item:hover .destroy {
589 display: block;
590 }
591 .todo-item.editing .destroy, .todo-item.editing .toggle {
592 display: none;
593 }
594 .todo-item.editing:last-child {
595 margin-bottom: -1px;
596 } @media screen AND (-webkit-min-device-pixel-ratio:0) {
597 .todo-item .toggle {
598 background: none;
599 }
600 #todo-item .toggle {
601 height: 40px;
602 }
603 }
604 </style><div class="todo-item completed">
605 <input class="toggle" type="checkbox">
181 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root> 606 <div is="editable-label" id="label" value="{{todo.task}}"><shadow-root>
182 <template bind="" if="{{notEditing}}"> 607 <template bind="" if="{{notEditing}}">
183 <label class="edit-label" on-double-click="edit">{{value}}</label> 608 <label class="edit-label" on-double-click="edit">{{value}}</label>
184 </template> 609 </template>
185 <label class="edit-label" on-double-click="edit">four (checked)</label> 610 <label class="edit-label" on-double-click="edit">four (checked)</label>
186 611
187 <template bind="" if="{{editing}}"> 612 <template bind="" if="{{editing}}">
188 <form on-submit="update"> 613 <form on-submit="update">
189 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel"> 614 <input id="edit" class="edit editing" on-blur="update" on-key-up="maybeC ancel">
190 </form> 615 </form>
191 </template> 616 </template>
192 </shadow-root></div> 617 </shadow-root></div>
193 <button class="todo-row_destroy" on-click="removeTodo"></button> 618 <button class="destroy" on-click="removeTodo"></button>
194 </div> 619 </div>
195 </shadow-root></li> 620 </shadow-root></li>
196 621
197 </ul> 622 </ul>
198 </section> 623 </section>
199 <template bind="" if="{{app.hasTodos}}"> 624 <template bind="" if="{{app.hasTodos}}">
200 <footer id="footer"> 625 <footer id="footer">
201 <span id="todo-count"><strong>{{app.remaining}}</strong></span> 626 <span id="todo-count"><strong>{{app.remaining}}</strong></span>
202 <ul is="router-options" id="filters"> 627 <ul is="router-options" id="filters">
203 <li> <a href="#/">All</a> </li> 628 <li> <a href="#/">All</a> </li>
204 <li> <a href="#/active">Active</a> </li> 629 <li> <a href="#/active">Active</a> </li>
205 <li> <a href="#/completed">Completed</a> </li> 630 <li> <a href="#/completed">Completed</a> </li>
206 </ul> 631 </ul>
(...skipping 29 matching lines...) Expand all
236 <a href="https://github.com/dart-lang/web-ui/tree/master/example/todomvc"> view the source</a>. 661 <a href="https://github.com/dart-lang/web-ui/tree/master/example/todomvc"> view the source</a>.
237 </p> 662 </p>
238 <p>Part of <a href="http://todomvc.com">TodoMVC</a>.</p> 663 <p>Part of <a href="http://todomvc.com">TodoMVC</a>.</p>
239 </footer> 664 </footer>
240 </shadow-root></span> 665 </shadow-root></span>
241 666
242 667
243 668
244 <script type="text/javascript" src="packages/shadow_dom/shadow_dom.debug.js"></s cript> 669 <script type="text/javascript" src="packages/shadow_dom/shadow_dom.debug.js"></s cript>
245 <script type="application/dart" src="todomvc_markdone_test.html_bootstrap.dart"> </script></body></html> 670 <script type="application/dart" src="todomvc_markdone_test.html_bootstrap.dart"> </script></body></html>
OLDNEW
« no previous file with comments | « example/todomvc/test/expected/todomvc_mainpage_test.html.txt ('k') | example/todomvc/test/todomvc_listorder_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698