From b7c2b8001351b95b6f8126c548e8c272c6b37aa3 Mon Sep 17 00:00:00 2001
From: hulinNeil <1289739946@qq.com>
Date: Tue, 28 Aug 2018 16:46:42 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=BE=E7=89=87=E6=A8=A1?=
=?UTF-8?q?=E7=89=88?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
examples/image-template/App.vue | 31 ++
examples/image-template/README.md | 4 +
examples/image-template/common/common.css | 398 ++++++++++++++++++
examples/image-template/main.js | 11 +
examples/image-template/manifest.json | 20 +
examples/image-template/pages.json | 84 ++++
.../image-template/pages/center/center.vue | 66 +++
.../image-template/pages/detail/detail.vue | 262 ++++++++++++
examples/image-template/pages/hot/hot.vue | 163 +++++++
examples/image-template/pages/list/list.vue | 179 ++++++++
examples/image-template/pages/login/login.vue | 40 ++
examples/image-template/pages/new/new.vue | 152 +++++++
examples/image-template/pages/tag/tag.vue | 74 ++++
examples/image-template/static/center-0.png | Bin 0 -> 1211 bytes
examples/image-template/static/center-1.png | Bin 0 -> 1623 bytes
examples/image-template/static/hot-0.png | Bin 0 -> 2263 bytes
examples/image-template/static/hot-1.png | Bin 0 -> 6187 bytes
examples/image-template/static/icon.ttf | Bin 0 -> 2144 bytes
examples/image-template/static/index-0.png | Bin 0 -> 3469 bytes
examples/image-template/static/index-1.png | Bin 0 -> 3343 bytes
examples/image-template/static/logo.png | Bin 0 -> 4577 bytes
examples/image-template/static/tag-0.png | Bin 0 -> 1741 bytes
examples/image-template/static/tag-1.png | Bin 0 -> 1681 bytes
23 files changed, 1484 insertions(+)
create mode 100644 examples/image-template/App.vue
create mode 100644 examples/image-template/README.md
create mode 100644 examples/image-template/common/common.css
create mode 100644 examples/image-template/main.js
create mode 100644 examples/image-template/manifest.json
create mode 100644 examples/image-template/pages.json
create mode 100644 examples/image-template/pages/center/center.vue
create mode 100644 examples/image-template/pages/detail/detail.vue
create mode 100644 examples/image-template/pages/hot/hot.vue
create mode 100644 examples/image-template/pages/list/list.vue
create mode 100644 examples/image-template/pages/login/login.vue
create mode 100644 examples/image-template/pages/new/new.vue
create mode 100644 examples/image-template/pages/tag/tag.vue
create mode 100644 examples/image-template/static/center-0.png
create mode 100644 examples/image-template/static/center-1.png
create mode 100644 examples/image-template/static/hot-0.png
create mode 100644 examples/image-template/static/hot-1.png
create mode 100644 examples/image-template/static/icon.ttf
create mode 100644 examples/image-template/static/index-0.png
create mode 100644 examples/image-template/static/index-1.png
create mode 100644 examples/image-template/static/logo.png
create mode 100644 examples/image-template/static/tag-0.png
create mode 100644 examples/image-template/static/tag-1.png
diff --git a/examples/image-template/App.vue b/examples/image-template/App.vue
new file mode 100644
index 000000000..b76f12fc1
--- /dev/null
+++ b/examples/image-template/App.vue
@@ -0,0 +1,31 @@
+
+
+
diff --git a/examples/image-template/README.md b/examples/image-template/README.md
new file mode 100644
index 000000000..287b85e15
--- /dev/null
+++ b/examples/image-template/README.md
@@ -0,0 +1,4 @@
+# UNI-APP 图片模板
+
+## 运行方式
+将项目拖入[HbuildX](http://www.dcloud.io/hbuilderx.html),直接运行即可
diff --git a/examples/image-template/common/common.css b/examples/image-template/common/common.css
new file mode 100644
index 000000000..4e6d2fdb4
--- /dev/null
+++ b/examples/image-template/common/common.css
@@ -0,0 +1,398 @@
+@font-face {
+ font-family: texticons;
+ font-weight: normal;
+ font-style: normal;
+ src: url('https://at.alicdn.com/t/font_702773_ttt8tj203j.ttf') format('truetype');
+}
+
+.index {
+ flex: 1;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+}
+
+.row {
+ flex-direction: row;
+}
+
+.column {
+ flex-direction: column;
+}
+
+.card {
+ position: relative;
+ width: 710px;
+ margin: 20px 20px 20px 20px;
+ border-radius: 10px;
+ overflow: hidden;
+ flex-direction: column;
+ background-color: #FFFFFF;
+}
+
+.card-img {
+ width: 710px;
+ height: 1065px;
+}
+
+.card-num {
+ color: #FFFFFF;
+ font-size: 26px;
+ text-align: center;
+}
+
+.card-num-view {
+ background-color: #FF80AB;
+ height: 30px;
+ line-height: 30px;
+ padding: 0 10px;
+ justify-content: center;
+ border-radius: 30px;
+ position: absolute;
+ top: 20px;
+ right: 20px;
+}
+
+.card-bottm {
+ justify-content: center;
+ align-items: center;
+}
+
+.card-share-view {
+ justify-content: center;
+ align-items: center;
+ padding: 14px 0;
+ color: #FF80AB;
+ margin: 20px 20px 20px;
+ font-size: 30px;
+ font-family: texticons;
+}
+
+.card-share-view:before {
+ content: '\e62d';
+}
+
+.car-title-view {
+ flex: 1;
+ padding: 14px 0px 14px 20px;
+}
+
+.card-title {
+ flex: 1;
+ font-size: 30px;
+ text-align: left;
+ color: #555555;
+ text-overflow: ellipsis;
+ lines: 2;
+ display: -webkit-box;
+ white-space: normal;
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+}
+
+
+
+
+
+
+
+
+
+/*双列表*/
+
+.card-list2 {
+ width: 345px;
+ margin: 20px 0 20px 20px;
+}
+
+.card-list2-img {
+ width: 345px;
+ height: 517px;
+}
+
+.card-list2-num-view {
+ height: 27px;
+ border-radius: 27px;
+}
+
+.card-list2-num {
+ font-size: 22px;
+}
+
+.card-list2-title {
+ font-size: 26px;
+}
+
+
+.loadMore {
+ font-size: 30px;
+ color: #555;
+ margin-bottom: 20px;
+}
+
+
+
+
+
+
+/* 分类页面 */
+
+.tags {
+ background: #fff;
+ flex: 1;
+ width: 710px;
+ margin: 20px;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-content: flex-start;
+}
+
+.tag {
+ display: block;
+ width: 177.5px;
+ height: 180px;
+ padding: 24px;
+ box-sizing: border-box;
+ text-align: center;
+}
+
+.tag-img {
+ border-radius: 60px;
+ width: 120px;
+ height: 120px;
+}
+
+.tag-text {
+ font-size: 28px;
+ color: #555555;
+}
+
+
+
+
+
+/* 个人中心 */
+
+.center {
+ flex-direction: column;
+}
+
+.logo {
+ width: 750px;
+ height: 240px;
+ padding: 20px;
+ box-sizing: border-box;
+ background-color: #FF80AB;
+ flex-direction: row;
+ align-items: center;
+}
+
+.logo-hover {
+ opacity: 0.8;
+}
+
+.logo-img {
+ width: 150px;
+ height: 150px;
+ border-radius: 150px;
+}
+
+.logo-title {
+ height: 150px;
+ flex: 1;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+ margin-left: 20px;
+}
+
+.uer-name {
+ height: 60px;
+ line-height: 60px;
+ font-size: 38px;
+ color: #FFFFFF;
+}
+
+.go-login.navigat-arrow {
+ font-size: 38px;
+ color: #FFFFFF;
+}
+
+.login-title {
+ height: 150px;
+ align-items: self-start;
+ justify-content: center;
+ flex-direction: column;
+ margin-left: 20px;
+}
+
+.center-list {
+ background-color: #FFFFFF;
+ margin-top: 20px;
+ width: 750px;
+ flex-direction: column;
+}
+
+.center-list-item {
+ height: 90px;
+ width: 750px;
+ box-sizing: border-box;
+ flex-direction: row;
+ padding: 0px 20px;
+}
+
+.border-bottom {
+ border-bottom-width: 1px;
+ border-color: #c8c7cc;
+ border-bottom-style: solid;
+}
+
+.list-icon {
+ width: 40px;
+ height: 90px;
+ line-height: 90px;
+ font-size: 34px;
+ color: #FF80AB;
+ text-align: center;
+ font-family: texticons;
+ margin-right: 20px;
+}
+
+.list-text {
+ height: 90px;
+ line-height: 90px;
+ font-size: 34px;
+ color: #555;
+ flex: 1;
+ text-align: left;
+}
+
+.navigat-arrow {
+ height: 90px;
+ width: 40px;
+ line-height: 90px;
+ font-size: 34px;
+ color: #555;
+ text-align: right;
+ font-family: texticons;
+}
+
+
+
+
+/* 登录 */
+
+.loginView {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ width: 750px;
+ padding-top: 30px;
+}
+
+.input-view {
+ border-bottom-style: solid;
+ border-bottom-width: 3px;
+ border-bottom-color: #ddd;
+ background-color: #fff;
+ flex-direction: row;
+ width: 750px;
+ padding: 20px 20px;
+ box-sizing: border-box;
+}
+
+.label-view {
+ width: 100px;
+ height: 60px;
+ align-items: center;
+ margin-right: 30px;
+}
+
+.label {
+ flex: 1;
+ line-height: 60px;
+ font-size: 38px;
+ color: #555;
+ text-align: left;
+}
+
+.input {
+ flex: 1;
+ height: 60px;
+ font-size: 38px;
+ align-items: center;
+}
+
+.button-view {
+ width: 750px;
+ margin-top: 50px;
+ padding: 0 20px;
+ box-sizing: border-box;
+ flex-direction: column;
+}
+
+button {
+ width: 710px;
+ height: 80px;
+ line-height: 80px;
+ text-align: center;
+ font-size: 38px;
+}
+
+button.login {
+ background-color: #FF80AB;
+ color: #fff;
+}
+
+button.register {
+ margin-top: 30px;
+ color: #FF80AB;
+ background-color: #fff;
+ border-color: #FF80AB;
+ border-width: 2px;
+}
+
+.register.hover,
+.login.hover {
+ opacity: 0.6;
+}
+
+
+
+/* 详情页面 */
+
+.detail-btn-view {
+ width: 750px;
+ position: fixed;
+ bottom: 75px;
+ font-size: 28px;
+ justify-content: space-between;
+}
+
+.detail-btn-view view {
+ height: 80px;
+ border-radius: 80px;
+ width: 80px;
+ justify-content: center;
+ align-items: center;
+ line-height: 80px;
+ margin: 0 30px;
+ font-family: texticons;
+ background: #eee;
+ color: #555;
+}
+.detail-btn-view view text{
+ margin-left: 10px;
+}
+.detail-btn-view .download:before {
+ content: '\e617';
+}
+.detail-btn-view .collect:before {
+ content: '\e68d';
+}
+.detail-btn-view .setting {
+ flex: 1;
+}
diff --git a/examples/image-template/main.js b/examples/image-template/main.js
new file mode 100644
index 000000000..9b3aefdf8
--- /dev/null
+++ b/examples/image-template/main.js
@@ -0,0 +1,11 @@
+import Vue from 'vue'
+import App from './App'
+
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+
+const app = new Vue({
+ ...App
+})
+app.$mount()
\ No newline at end of file
diff --git a/examples/image-template/manifest.json b/examples/image-template/manifest.json
new file mode 100644
index 000000000..0e8f46afb
--- /dev/null
+++ b/examples/image-template/manifest.json
@@ -0,0 +1,20 @@
+{
+ "name" : "image",
+ "appid" : "__UNI__D5C0215",
+ "description" : "图片App模版",
+ "icons" : [
+ {
+ "sizes" : "分辨率,192x192",
+ "src" : "图片路径"
+ }
+ ],
+ "versionName" : "1.0.0",
+ "versionCode" : 100,
+ "app-plus" : {},
+ // 5+App特有相关
+ "quickapp" : {},
+ // 快应用特有相关
+ "mp-weixin" : {}
+}
+// 小程序特有相关
+
diff --git a/examples/image-template/pages.json b/examples/image-template/pages.json
new file mode 100644
index 000000000..ca7be5e9e
--- /dev/null
+++ b/examples/image-template/pages.json
@@ -0,0 +1,84 @@
+{
+ "pages": [{
+ "path": "pages/new/new",
+ "style": {
+ "navigationBarTitleText": "最新",
+ "enablePullDownRefresh": true
+ }
+ }, {
+ "path": "pages/hot/hot",
+ "style": {
+ "navigationBarTitleText": "最热",
+ "enablePullDownRefresh": true
+ }
+ }, {
+ "path": "pages/detail/detail",
+ "style": {
+ "navigationBarTitleText": "详情",
+ "navigationBarBackgroundColor": "#000000",
+ "app-plus":{
+ "titleNView":{
+ "buttons":[{
+ "fontSrc":"/static/icon.ttf",
+ "fontSize":"24px",
+ "text":"\ue602"
+ }]
+ }
+ }
+ }
+ }, {
+ "path": "pages/tag/tag",
+ "style": {
+ "navigationBarTitleText": "分类"
+ }
+ }, {
+ "path": "pages/list/list",
+ "style": {
+ "navigationBarTitleText": "专题",
+ "enablePullDownRefresh": true
+ }
+ }, {
+ "path": "pages/center/center",
+ "style": {
+ "navigationBarTitleText": "个人中心"
+ }
+ }, {
+ "path": "pages/login/login",
+ "style": {
+ "navigationBarTitleText": "登录"
+ }
+ }],
+ "globalStyle": {
+ "navigationBarTextStyle": "white",
+ "navigationBarTitleText": "妹子图",
+ "navigationBarBackgroundColor": "#FF80AB",
+ "backgroundColor": "#fbf9fe"
+ },
+ "tabBar": {
+ "color": "#444444",
+ "selectedColor": "#FF80AB",
+ "borderStyle": "black",
+ "backgroundColor": "#ffffff",
+ "list": [{
+ "pagePath": "pages/new/new",
+ "iconPath": "static/index-0.png",
+ "selectedIconPath": "static/index-1.png",
+ "text": "最新"
+ }, {
+ "pagePath": "pages/hot/hot",
+ "iconPath": "static/hot-0.png",
+ "selectedIconPath": "static/hot-1.png",
+ "text": "推荐"
+ }, {
+ "pagePath": "pages/tag/tag",
+ "iconPath": "static/tag-0.png",
+ "selectedIconPath": "static/tag-1.png",
+ "text": "分类"
+ }, {
+ "pagePath": "pages/center/center",
+ "iconPath": "static/center-0.png",
+ "selectedIconPath": "static/center-1.png",
+ "text": "我的"
+ }]
+ }
+}
diff --git a/examples/image-template/pages/center/center.vue b/examples/image-template/pages/center/center.vue
new file mode 100644
index 000000000..1db4750e2
--- /dev/null
+++ b/examples/image-template/pages/center/center.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+ Hi,{{login ? uerInfo.name : '您未登录'}}
+
+
+
+
+
+
+ 收藏图片
+
+
+
+
+ 收藏图集
+
+
+
+
+
+
+ 管理图片
+
+
+
+
+ 上传图片
+
+
+
+
+
+
+ 帐号管理
+
+
+
+
+
+
+
+
+
diff --git a/examples/image-template/pages/detail/detail.vue b/examples/image-template/pages/detail/detail.vue
new file mode 100644
index 000000000..d53c5475f
--- /dev/null
+++ b/examples/image-template/pages/detail/detail.vue
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+
+
+ 设为壁纸
+
+
+
+
+
+
+
+
+
diff --git a/examples/image-template/pages/hot/hot.vue b/examples/image-template/pages/hot/hot.vue
new file mode 100644
index 000000000..b7e8cdfbe
--- /dev/null
+++ b/examples/image-template/pages/hot/hot.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+ {{item.img_num}}P
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
diff --git a/examples/image-template/pages/list/list.vue b/examples/image-template/pages/list/list.vue
new file mode 100644
index 000000000..08219b4f1
--- /dev/null
+++ b/examples/image-template/pages/list/list.vue
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+ {{item.img_num}}P
+
+
+
+
+
+ {{loadMoreText}}
+
+
+
+
+
+
diff --git a/examples/image-template/pages/login/login.vue b/examples/image-template/pages/login/login.vue
new file mode 100644
index 000000000..d2780ca3b
--- /dev/null
+++ b/examples/image-template/pages/login/login.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
diff --git a/examples/image-template/pages/new/new.vue b/examples/image-template/pages/new/new.vue
new file mode 100644
index 000000000..694d83838
--- /dev/null
+++ b/examples/image-template/pages/new/new.vue
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+ {{item.img_num}}P
+
+
+
+ {{item.title}}
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
diff --git a/examples/image-template/pages/tag/tag.vue b/examples/image-template/pages/tag/tag.vue
new file mode 100644
index 000000000..c3a8e3201
--- /dev/null
+++ b/examples/image-template/pages/tag/tag.vue
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+ {{value.type}}
+
+
+
+
+
+
+
+
+
diff --git a/examples/image-template/static/center-0.png b/examples/image-template/static/center-0.png
new file mode 100644
index 0000000000000000000000000000000000000000..7b3edcf38def49eb13ef4815ae98d622bf56e226
GIT binary patch
literal 1211
zcmV;s1VsCZP)8{hRYCSi2~_C><(Wo(LXx`5~kU;!iy=EY~&2p=>W
zunO+P;&>DB;!lk-I#r>W@ibP(d)N?Pwkj_Cv*SsufQPUJ{%(=g#RI3~c>ID@@pg;C
zA$SvluVN1DgX>!4wE|cWA7Z91%0@73e_VyHv1m#BDjcl<&d1@Uj;~&&p^hoZ{4SQj
zA-JUOG0i#fMQKnwmISQTQ^R)z&ckEaxaNWIw0Iy@<0brwBwy#+J&bYb+<8HfKR3Rw
z0nq{=P3Y#*sMe?v-ht;n5QRsY+MZh-d+j+Mgb9YZ=~ZRWOHDd_
z(}>aqK$I_4%4xu41kO^QA*_XVDorsJCks)=hg>e2s4IXdi3hS1FIl#z>v1wZ>0`k%
zWhBY@CG%3ItGA2({B4+*DSH9~ilCfV<zVI&Vhx
zj4G){dmv+V71eqmD_)XynT^5IS#m_G0k8>fDOb1%
zzZl0LchIq<9LzEU^{QBoW;>K-Ijo+M07PJ>!-LAx&F<}pE?&M7bCxhoZ%L^gGE9d9
zutDjPacSoS>j)r^bg{A=4_06BH9R}%NKiDG@RBWK5)A8$a$k!b+N+d)+xNOEk6J4zmmw~-_1OY@9v
z*_~5th76(JhlYt{_+VRddY`=g4b=y-Sm$(-W-^iJ9bAaZ2O3o~3r!>t|FdNpfGO>s
Ze*i0L+A#`?48{Ne002ovPDHLkV1fxqJ`Ml?
literal 0
HcmV?d00001
diff --git a/examples/image-template/static/center-1.png b/examples/image-template/static/center-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..936ab3d8d87cb7a2bcf5d920e489bb22c75fd7ca
GIT binary patch
literal 1623
zcmV-d2B`UoP)yrnLL++hq$x
zQnVDIgbEsh>6@9wDrm$I0)c{|H9(P{Dp3Lp7!!*G`eSE~dGF2Ew(0KPJ6lSdaQ~h2
z>vPY!=e~1C9OO#}dHlQwFp@z_(+-~1DKt3?_#!X^Y$m2{$X)|pLV5t%-Rg}t?W@dB
zI0I%T`s(ws<_ge}eu3E&n66M#xz|sAbg2menEUN?Z0p^KlM5HN9kdbbK`8x+uC7Pu
z*tV6eogc=AKZSHIa0bxXlK(YK`nKGhx7r118^GehkD=i|f<6Mg1-1&hu9Z9cKVt=B
zu09hQ%Yg-;4zS1R=Brv7{i_{_wg7CPemFZCPk=rI_A(t^r)l}we+vn~`fA71Xx5QF
z3idQ`vRw3Lh>c7(7{FGhlX!y-pwD2ufb3Mc=+#iidBM5gO@%if0v(6hA8?hgOR^AK
z;Q+2W04xQ28%ih0m7fi9xTmbSG%LX;K_5Vzr?_%kh`k^Hi`O3k+y9O@q#b9Y1!hU@
ze9UeEUWe(k5<2sD>N-FbwjEBmY
zOCJY)8Zl3CWxbESKY&ZG1}(vCt&->mKE^|3%%%5%vid(?u5zo7egHsqDKLQ9IwjG3
zALF4i=BioQ%*J$%l5*;!9{`YE09pg~s9f}UALF4i=F)$I4u#Tbay<|F==%f2_0OT^
zBbe>rh@&QJ;p`ng4t!mxE7)2TF?}*SLy6Nshy2z3m}Kc+un|BCO#S?
zo1$(<=H#M(js;@<>9I6)9puk1nWd+&L%ybD?kgc1Fe2MFKmn0X0c8_ZxfRSUa?!#u
z0bE)ImGk?=G{E%9*XZIix3v>|rZX{sd@#3lU|IWn4RMv?%9?Qiz6Z3%Ms1+8YkoVW
zGocKavl7&n07?GFWBeD{#d6W@K09eHJp#lx3sM1A0Yu)Ja`xy&dTZ3mfj$AE*S4!X+i*&RKJg94_KO#*KkQOR=!qF
z&5+=Cw$c1qvbLC}U5(V0cO&ULiYxc|+VjeQtr(of_Tk$=bBe}c&(Og+>Ww!0IvVp_
z^rgqqP#tkh-qFNrn0|%N>%_PKmQ=rj*{||fxWf1iV3*59+xJEAJF}5Jm~GMZ`7NJs
z5--qUJ>zZCr~t(aoU*UO3tKHRIKAxvT2h;X*)M?)=4C25C|@&LneG+9`l?@|!P-2f
z#cJz-wFA()UuFR7b{=rEhv_ISRB!n&V;u+FMq@uaWQJ%v}8hXsiYmW322f#nC+@
zV!H#l^nq5|Zj`HB^lk>etM8&RYS|_EUEt?(l?8hTh|`CVzK|VUxysKD6oC9(#MPCE
zOMzd=RkF{KA|bnxz6bEm<;*VwF1-hICRh!0<2x5lJC^P8A~sgZRW8|k3H|?%hITyc
zA03rW-*x)i{R|ZMK!58W#OyLTfR;Un_^IOPrcv*K11MVWP{#e3^S1OZ2_EzS{{y~X
VXit7H(8&M*002ovPDHLkV1jY`8BYKJ
literal 0
HcmV?d00001
diff --git a/examples/image-template/static/hot-0.png b/examples/image-template/static/hot-0.png
new file mode 100644
index 0000000000000000000000000000000000000000..2624d56eda36c1a7975bae45a6936774fee3675c
GIT binary patch
literal 2263
zcmV;|2q^c7P)|Pd_*e|5~v7=`5<1{w=;Vt7zkor`B{n*HC3QcC8B~+Q6ut^
zDuaq8iHaY^SNsGu-0k$c^)v>Mg9L&oSn??(RVf#u+#P%SwyoZJ?|iqnd$*U{EX;rJ
zy_xR*&Gbxn|K=eyu^D4lAmT3oU=9G>%FH(q(O;XWVw@;!rf_4--H5n0lF7`Bh?`5L
z(iigie5skbB3VrZV6FWl0K5YL9%JVDhvYcjDKgSp`!xXgVhF;`nKNhg_U+q)W`JlWfKLIyjQ}v1N~PMX
z4Ybx?4*-{kAihCFSH%HjvsuH;KVs&;1Hi>Z^mroxn+YHf0B1AvuZig0)yl=4wAS~B
zd!mep9l2a?cWjmR1HcJ~xt+GwG?-Cb>N&OI`bkeH7T77B%92L=WP
z>-D$Rei;D163%ot5&hg4b2K6z2;c2M#5Ljg2TG;Viiu)KT>u>&9Y@ZdJv)zxZ)fI5
z0l?InjdVJFgx305L_CI>ZziHoP6T$%nl)`BBO|g}ZH_dQ?>w#bZ(@V?4h;>RwR7jr|HK7lGMUdQrM?-?-V!2;PNKRv
zthFBlfQp+jv&{A@i0I36sZ?4308eSH|16Uyn3(yrdMQa=0O6_N;#M&8jYM>5^lsU*
zW$m+O&3YC9+L`$dB6{Csn@+yVDin*wrx9^30Q3NW901oa^AHgo8SaZy6N$tg08jw%
zOXu8srn&-)wbpyXL2_EW4FKfqK0VqK#+Yjn@d{=hVde$C??2rL0O=F$1<98rejwr!
z0pgtVA{oY*t%$fjd_KcD_fWO`x+{=Qr%z5K5|SE7^O*Tph&Y>>cM#Dz;DSrWIj^m)?YVGAjZ+=m+mV6By;Op-Hc
zCo=Peh#4f}nM`JbQtErM#K~lGMzL6&2>>r3;_CoF0?hnS(D}}}_-1byN7ZJ2iijea
zqcXx6Q*ljZmI!@QLjbI`w*tWXnfWh7v^1OzaijBN0(zWts~fhss$*wo=do>VZTrNH
znE5gy+EPoFG3G&89cFe!l${hnI-Ncykx2Xt0Ful+nzvNV*nXwd8M$2U`9lRD|xJp_a>z10c(qOeW=wmVD(VBDy#d9HthpF!LrNl9XWD
z&GWpDg9i^jJTNd&oeRZfORez|BF<#y>xt-!=;Js5#+Yv*;-$$%$Ye6>l~P;9_W|Hdlcln)1ZIr62obl*_DiKwZBfBA#)YE5B2kx!E@-8Jlj+K4
zvr;Tc&IH9`@r3^Ve#yaL6hK&1{1*V)n0W&ceSb2ct^DqJ-V&{KrGjJT#Zh(|2QZrZ
z1VM0SUtixqD-E1XS0{xK`ydEPl%>)%x`(PV;K_1zdV7ZEEb
zVzF3U*WcfNS2ci*TI;XM%L4}vq;~J#{bH+(Yedh|rAv=)Z*Q-Zo#k?Qqwo8btaa3d
zJkNWlQtBRgsgzon%jKSEL~yJ6#LG@*K9`7oI|e{JTq9ySm&^U3RmL@<#~9;9Wv7&y
zxm@mn>QiWDB9W-nyXA8E1HSLy)`;L%^)beL5D|YS`bwqJtb9H%C+7cMNFJ=Ul3C8H
zu66AuU;=_f~7$XFNupd~9`KtvWPSjQ?l*46QBXX^^71lfCq~7eDdnP`v
zUP-wH5kDR7g^&8ae@i3En%$?W2H!$NmsRVi31H>Qm9u8dm?4Ri@bv*RuO*^Nlx|fs
z#;is}iMB%7?;jo>UQo@;jyp!<#$_^@RZ1x#Tt&bzB6`lbds_iOP90|M3mG{fvQ{|f
zB9?HB2@~EA7-K$!h(8W_n-N63(m5wAg7BG#qoK7{*pO?4vXqHq=Ch;Jxt797Z)mKw
z>zMiW*qyJ;%!SpPX}V~Hfn(-dWTiz`X#54f@9&sM_M`x0u(ek1dWAkbJ``R;#M^=(
z*wok8Czo=E+&s@)tdx>sU2+{Eils@pxULo(-OwhkWsTg}q*AF(%zQ~qk<66bA>0!L
zK~FxPkLdUb0j1OFQ?=Gz0PrqE%tW1qOhCl%6bgl_Cc37I3vXxz;sdhT>;n0TLvnHn
zF7a>7yblrgFtZdxFCt{rK?u0IzE|9
z%6*t{_7&GUg!a6oEF&W$+ai`>sxl54Kui&4v)NV5ESDfF5%DAdkZ7K)GDeQWdztw@
lW)^z>ao_hPL7Ucz_CH2`1#R}a?~?!k002ovPDHLkV1lSDKOX=9
literal 0
HcmV?d00001
diff --git a/examples/image-template/static/hot-1.png b/examples/image-template/static/hot-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..4899c8165991effca0606c2b2e58e33ca6f70659
GIT binary patch
literal 6187
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
JPDHLkV1hc1f@}Z)
literal 0
HcmV?d00001
diff --git a/examples/image-template/static/icon.ttf b/examples/image-template/static/icon.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..009a10c287ecae953def7c6a4876815c4e3a5247
GIT binary patch
literal 2144
zcma)7Z)j6j6hG(Q`|f)$(ZtxaNt;^Jv?ek&{g*$?sq2T~rXq6+qGQa)Hnx>EDNX7u
zj3L_>2afH7AR7!BQyH6xV`HEbtZt66Igx>1M(KyjGHC0U!Ppp@?)Q?obvT$8&bzj-I5P;&;d(67LFlp|`6u
z&r=WE;Fk`@w*NhPiAuZV)Z!HNN)VJzEgp_=1vt?hYKE>l%ZgPqDS8fa4_PFT4pX=!
zO1iXb@xkI^Wo5WTB~{~j@otl9l8u+)V`&V>kcqLvyF@OC(oa^*{;~ZZ8TZkoxF+VP
z0S=>ybgDbREnM%{ChJHH0-L$dvdjjPlM18!J)mWAq&y>Tm;u1@v~nBTt;*9d3s_vo
zb#TS|;P(>z28e9Y;5XroE)i}7EW*Br-d0v$I^1QsUBQcTC0mwzF^QN4)_A`p);+ySGK?2zuDjpBeh|}M6W)a
zYdyn!R+*;aj||<_=qo3Djg2eMp5!a%+X}2V9eC|o%iNS(x2{_;7bE9|!2V9r%d#Lt
z)J5A-hB$YKIAdd8;bBuZtad(u7VhazJ9>ybeY;E2kvT@V5!coVZ)GG2}6E&6CbDq^V$y$DIVO1{;lhVE%xpcw(->oB{^~d
zmAoMQ+TzteXpCEJY-znrou0)<2*D$VnYEU-WS;rJSf;ccS#?$(iY?y(W|(67MnQ{MZT+Wi>e2ah{jNXG)e(6Zk4~5wsQ@*q1#DY
z{OM?-uf6jM^##{P226v*wE)d)9Qj
z%~{(66pF<{v&xoACb-FE+jjY9vrfa4#44lwi#Bx~Zjtjcr}>EN;y=;B0@RKSx>L!@
z#_RnJxIh1id$^@J7HdWjmJfk)LOKi|iG>{eC{^F;0=+N&;uftztaK_7i$=US+K8$B
z&Yh?g+GvwtZU8ZVL
z^HgP=Ws0~Dv=1w8gHD02f~G+W6)P9{sRgg%2z|pF`91zocq(4qw4>4?o!9;7@X&=?
zY(~#S@hT>QOgde|67n52tbjkSVFPFTL=9`mCu-P5O*G^5Q{~jB8Ja2$LcYI-
z74Y>MHqa-NHLM|jqlR6Spg#)5@oZ*vxIdpel+P8ZKt&p-EM;hvhN++Ol%qqHZ*gyS
zyfB>4g}dUNv==7hFdnX`!e|_E>U?}xk8imO{IEZSDU}xixzkDll3J+#;
z+3`#UX6q%}UOtCel;nNqjR8W&cd7DV@mAsdT`bJAFukAlAiixvT
zD%gORSoYeIH5V4O(UT6|w=eia-7Zikz#3C)=j#p{(2&dx^p%VNIt_a~=5PA~{l01t@+2~Y_1ok0974!U8i`(RP9
zN&mvy`g%ZH;zfNC#S(k%R;k`q(8FOi5JNR^q&DN2k2e3RF|ABNQiTX0BnI%I6Csic
zBgLU;Fd=sGwDX8P;+$?qz#-9zY`?@Mp{`9+zx3W$pX@|{=d29aI9{8s!7#z)b{NN$
zf2n+95Tgy#KfA0>Jks4hPF&%`tpQdv$p?l_%f;RV5jB6|Zpndk9Q#z)rmyWra7~mx
z$Z^NCya(kOBBF({SO*YsM*dlGYQbGh~^ZJYsU{(5U4X9bB8UYiX=n<8Z(!i{_AvR?vOQ;M*s3SBy+AsYJ^iu^57-9^l>=w{V1|+H>!VS`2~lJ!WVfDa)L>@Ef_s
zp;mW=-oQZ~I|dEBD`{f30e@p3hJrrz=)U+^D}HPVTSJIyg`gOyug|vEZM88CrZrmT
z4zK2qCd697uzT4WjZ&csl;S&MbEr^hN^#;?Cn{7FD6_}*&^FH4KD}k}G)}5N%;iiE
z8bl@jz6i>jca`zD%riD9W8l2)#HU%lrQr?i}pP_wo{VStty`WFVBM!s|MuJWU`fHdjd
ze78XlyOn-}f}5bQ3_&Mbs;=&+iwWXay9E7;yj6-38>)+pj8s-<7>ipE;~4wnPz`H#
z$$CINQ7?SIYw2
z8*5~c)kf)$oM=27oE@&BQ&@Di|-Nv7tfqShW+PddgbCr$tHbq
zebEV7F^bK5ob|LIg^qG7u-(L>O$C5)g67iW&TPY&sEL;3{3U-yUX14gnq7Jz8tXmV
zvG1Nil_;nm-&4QcAb_Pf8>orFDauI5J6RR<&87TaYTe=uro|vQCcw`Uf#aNu6yWx3
z=6l4->gt@aXG_v2C<2N8(6CQ@gjdM^rlzLsLpO#O$3Rx-0Ur!-#iowAXC0;zS{~+%
zd=UkLa8`;DXKCkcy2c$Pw_e7v7e7~T$)eAGat9G93D<4V_W;Q4<`fks5Yaem0ehPiJuv9
zF8R3c*Xlj>8%!E?8vvjUK|yBfu7d1t+>r
zuHurQ78KXMYxA#1Gy;NNUgeXuAV_IN1sU!(c+z9YS>DX!!T;%Rig{AjM()b(m1Zdr
z2SMRGx{2z|hK%w;b~x4+beMPL3YA}EE!X7cPZUs?#J=+-hITG4F3!yimBs9b&b2Cp
zbolo(ZOjv(QbKd4IQcS0RyMOXY;Gij`atneiGUk*N-m)8W6dmWQxN^gzT`rlxNl%)
z84togaF!(iYfHg{YVJQ;HCO%k@#BiHpWOS72>r%We@JIMQas+p3)8~b+1dHMX;AE#
zWt;;#f2#=x&&S81xrN-7a
z9e4Mi)}L+lJ!b>KMv>)q=jiKzn1wetXGjvB$OiIsXZGtz8=I6Uz4APUSV$a7$8XuC
z%F#rO)pfb?DhNz|x8W$FGI=Ss!dy38j?`t`aHv$k8-&3ZH9^!#_es^muQctn)263`
zYg%`q%(Q7n&InWnf0)0Uq643MMM^{GrG01Zx-7$Fm#3&>_Edy+Ud|_O_NuPdnj|?+5QK4
zU9SeLhzUX}xlq1NrXZnyDJ@`0S_!-MBhLd_4MXeMzbwGhFax03?RLx8_prF$231=1
zfp~4jyH}DvcwctloG{`PO?aQ4Hl+w)CqyjdfEeX-eQ5&aDK`$PtdK4?rL2Jw#IqEr
zSBcOK-?w<^oCNF^vgas83BH0SRG^-E0!74k3_*`S!70XiAYEUP?JE-U#$*^tEZ!Ry`p`>v@5xq&nN3g;AMB|ybooczK=0hWSgvubvn
zuC#Ffg%an3eOjQ@vU#txzjr2z@!mAf=Yd^r5(1lWdGpJ}{Mj{fdPsDj(_z6iP+(iA
zm(gy@c(yob`M5mBN%B`HwjD^{eJ?S&OeULIEH7g@+xgM6%u`YrK=xJeoHc)5=IJ+D
z|IE3hD(bazRZ!<6aHey#PUw{7|#
zDhVRy6k%>1Z4ges8V9F4;pcP@zC>Q#Xot)aJQ`K4^Tvz<+hF`l5B19
zJ>~pS7*^gRYgz)ubxms{hL)n(YtMxK!GUDN^IRg4{CDJXh$`pp)bdMgn1mRi!1hxf
zv{MM3y80{KZ*=PVt2gQ=J>T|SL-Rz@DPUy9ohg%#4_f5m?J_AWWGluS$dL%73lXnk
zcSkf;&Gick3dRgsBQ&NvF(BS2s~yD+5nub2iLxXQ+Mps|^Aje@kCXj;P6zgR)83}B
z`@$FlczAgPmtB~jpT8H?>vL<}LpS5_fyDepo_i
zr|T@TU=Ph>c9i;`p1t4NeTfQ@naaZGFY2_7TZhe`+###N2r`jwAsf;sBr2St*X2H_+094$4A1z3&sjHlt=YG*Rp$>BRO^5
z_X_wY-q3nsr$j;aZS%lyiEA+2-wV$51J#QLPS-L9?!kMWoj6{$8^%gA(+z}*Ref|J
zC|y|P!HbfxEk!|acx0fufnx|oIMpV11n%s{x0`qc1}^SY-$2QOWLe9v`l95m_!WVQ
z+}P=g4xh13))t-CW2c?ud)d;*nH*uCd&Yq1E0
zR0ERW`hXgpySuftRHW7_2%<$rP>8Wmg5_Z;Ymm~?-M#ZOXYRJ{?#$eI+?m;#J7@m7
z$vv<6eLwR%zcc5|IfNWtEQ~WjG!Kl~U`z+`djY%yU?)J&f$%#Ncq6sxJMv-{%EOIv
zhjBJ4vLj%CY
z@@f#iUZ*B4B($D7%SdhZh6R8{`3?YIi@@>&AYMd8{lN&zN?j2R2>=V@c7U$+wl+Tt
zrgwob**h&7(i1cs0N!q&p9fJ9V|gPj)!&rD^NQ}{Q86z9^Nj!MQ9yqWKy&f}LBjyxqtCySgytC#@|sO!(fjs80M2oNprK-dh5#Tc@ec@|
zCkQeRK-A*r4T4Mq5SRFQf*`X1urO``XladL%~zlAHT?709q3fl*Ljtd#{V-3KvLrS
z_XJ!4LCYcpnFAnc@f#h2Oab62KJ(pF(!Us&tM%>9A-69A+|{6>Tz
z^#G(z{6>Qy)c~Yb{6>NxwE%FbTm(b726Qn8e0~GTtOtgv1b~IH6rfwuE`B3;g46+!
zHSx0!L8<`As`y!kAT(5~{^H;-1jti=SW0Kkv8=_kSc@FF{j|O(hy?&8ez1sSG(AD&04VW;i9gyy
z#7F^9;)fG|I0Sn(0Cb*9=otAINRa{HEk1Vv+J$);>V-vt?|E_zUVY)gq#%d{0AJ#t
zgo{YmD`5?jr+i65P&WWd{CLnz3WB--P~yiU{=t|af$ktQ080FL#ZL-?Pyn##x)R{;
zyPJT!p!)pC2#K>h2n>KFKJ&dGxa3vhN2dIcg5rW85CBU2IHdJoW*iXs20)4LU#K`!
z^2$w*-dA7?RlQ%P?Pe`_kI9}BQ3uL1C7ds=fFP&m!83=aq#
z0pL>kVwkwkHq=u9_|Yl0G_C*?a28B%bDcn{0f7wwOMK=ZJD#zl0EkUoKLxu3z-Qpt
z6Q8U(i|7KuFaT%aGWPv8K-K>&P+{{WiCT#L%U
zb_GD)T81jX3jpg8^_oB$0f7a85Ah!YCM`sB?{OF~UsM2u(y#7JegFsx0kJSX4B$zC
znw(q6^7M=gNa%gm**Xe#)ZnnzqLcY^R4FY&EH6#!wiizHtV0DMC5
zNDTn~|KuNNy#gQ-9YYrq6aY^M7>~Mi0e0~l#RIU|bOdu=prSQQ{40jc55QOG2
zZFKXZe?_dT@8T2y9;V`su9+}R`L^;szO5Q4A-|47VGgyo{yk8(h!QIRY8a9`jI&Xp
z4IoU2$llJyFy2BFFQj(;x3SjaP`CoX#o}D*S_sqZ2GJOg08f6Iv>8Od0k8|;U4Yz`
zgpL7t3K$;)c)n-X!Q77mX;jqKCkcT9!11XtP8xiZIlhJ%yFgeCv*`y^`qZvkqH(e3
z7@%?m2-g8P#yu_XL!t0dYH$5ZQV=KrMp&9x8k5k6KLIq=#b3V(qUD&tchR-_z92&J
zYGXX!DqIcbb^u2?=4HH!u{?{G>8}SVJ8W77z!1v~&U!rtkn>6y@ITNr=6q^f{Crr0
z%Y0lkrh{k$fDgJr_D4)U@l5*ssr~iT<0r2IU?>2hd_90~J3pEH7!E&jJ}sI5wjaZK
zrD0(l4nTggeU^(SxPeOAtzPBS`@aHU(1I+sjsx%B3Bu8Kqw*^NPLBEwp7ll%cm|*;
z4t4GZZ~_T^PrV}7j8ELw1Qz%VxgaD=-I;t5#KrPAKv?B)!vjEJHi?!$hcSj%9v0oF
zfGbZpjy4F(sHnN0bL3UHkN=eiIOqY49RN*pu-WY-G}$%8cCjeSZpWbxeuad7Tx=Cv
zb2cukg7f47xWhOZCOz%ohF`<@u^*rtE_f?m5jGqOerG!flWp}d&7xAPL))ThkpiIl
z6vzplo1~^XK7tc@d;MK+fL;DgYD!Dh6=cAw+cnP(ffGrh`=%pt=Cn
z1*k4Sy$7&Qgym#Kkm>?d7ofTT)di?7Ky?B37wu{osD^=RGAPUhRHl}Ns~}JXfhq`8
zL7)l(M=uEc=K5pN-}jn*fgH9_Nwe=E9HvvMxeP1s3qp+V0Q4n00EN@3y+y8;4txcR
z0R$I-E{Ee^`FRrh^uV2~FnU0=*lx7KR1z&a0~vELaTowLJ8l^t<65`_HIK?LP#KXqX
zR~GC~3V;$oa@UNJS0@S0?w-Q5$|X;p0pM!)E5Ca@bcFYPiG+T9SThIr03BVkVe%99
z3b_{(51$g2L_ar>Zvc8e1XP}Ju=|4~^iTM)pHrIP05B6o*UOGy#}bxOQFHokKWzJk
zM;bX^70e}L378yqA>kWI=-&!!;J^S327>JXl^iPFi$i!?T$?84+XEO+0W`~I^E%c8
z%CbTNu;JanzLx-iWp6aZB(Q2s7}
zYg`1ohJxESXE?HZVGzYv(=S!i7|7-4wcYBQoX*
zfWcv3CxFXc?E6C!y30{N{w-b~0M#SPwmAkTRvYB06u7CLD0S$qq@0o$hz>nN_
zK$S+P^P}>tbpv2QQ0)E)$lT%_4-6A>Bbe?69sO{ad4opw0K97b1nk>?JwVFrDc9QT5$8^n(TO-}=rzsYk6z4A2@04%mPqxsFr
zF#D&$ga+`H03GIGgI{3cVT+@D+Zq`F76jJr-DChb$4ks`|GS-D9j>%kauET{aTMJN
zw0@3+Jl`O?D^dWeF@ZH{u@ub0`v8ZaHQ)$@D!X8>l_
z*Tj)MRxD3fgiVal1IY6Th_5E0KM-9569S;>4YoD|yRVSHYu}%_d{F_4uJKlfazz$>IxYD0YNUY+YO>ez%84j4)VMV
zkT?Kd4O0InYXJp7vi440Z3=+YNs?@X6adNEJ9V`w08%GOvJFxIBx~=~)usSQog~RN
Z=zl@31Hg*uXK(-j002ovPDHLkV1gwcDdjrX@u*4OGxl_ya_xREUZc5JW;z
zvH}VSi39;s{)kjnpoUdjNUMsbX_JO3(0sK`Dv{l?^}HE-v&q_?8GG#ce(xQ0#-6Qr
z?fHHm_s#lBtF<)uo_o%@zjr^+2f`SZY&NR`z@hO!vyw6d}iYBuq$h~^>yEt)`!
z2y`<5z7=)`*^W{Lp#LMl^Aa#9@B$H@H;lO-ojQeeJ36$RrY8Zgw6bza(#;PM(1!rv
z7i=8xUiz;Rz_UpBb)QfA`pJ_gf848qXuo>~0Gg&P65($F&~E^?zH;FT0sJo#oKqC(
z3-j~yOTsaD07F6pV0n3YLD$Vs5W>e0;2mC2=pG(_fPm-Bfba2zt&!cHRFg^o+{Q%NaBuRghp+5PV?kA0J7Qa
zEe6432=Fsb3oCMe1n@sH!Y5Oy)OjcQbPNDQBx_pkEFjzu0J4)pdZ;f05I(CWlV=gp
zaDs0~0Kj+i2Eo4~z|T1$l-K*%oeh55iMI#a0ibEiA2Z2(3=t;0J}^%5PXyZ%N}p8K
z`Ez#mYa0NTmI_lKl^(rOclcHf8Ug$pn3JDcSeV|lisoKAwgBMr<;&q}z40{!xWf*n
zZ#0@j@N_8Xzx(*{XrfE(xppt^@jd!M0kr;%pKC%uK^;u7!3H|f8xZ6
z6)W^(2>@1BR;HV}@e%-}tzhbqMt2Pmz>;5)&zwAYvM{QyMh3v@>gvSycKI1VJUuEi
zhwTT@0MUyR6Os4N&dzQR&}v`RkpOVs$zLAD9&u;@
z>|X6Y0SLb`9Q)3-l4S*aiVqYY|F3|e_(75+Fio@d9wtfH`dil<(A0I%n>y%56Lej7
zj>(~WqOYo{)IGyKBn=IKB`x~}1o+LN`L?;CB*_p6_#xmALLd+vsyD;Xp;oU!wOR%K
zTi8PI&*^mP4~F4yC;((K%Xb5sUm2!DyW1#=0^#rkgo4&uhF5Dlt$`0sKqzGGz+cZZ&jyvMkU-b~3N5D7N3RT`=Yaq~
zM5t-m7ew0eBO*k?M<5c33?lc)b<5>4lq*~8RWvd!s|fIwaav7&V37U5Kmb_Mw1*Jz
zL8}-Zm5$G+z|>?6c$4Qw;eEkosR+%cIQs(vI=i5%5A~~$z5$?V+U*4RGyq8b61TIS
z-yeXf$!Kdg?`GlC!)9p%8VzAQ!%PX`1F2N%nSS)r7Xa9XFO$u^hyXv^4^g}8@UET*
zpQnEj3NHf;f_l9s0y{tiFQ?Vyt%%6y+^(fB4K8WgeF*q)FJeyo9t?(IYEn!)(#_H)
z)M}Q$*bb#u0{YB?sy@=IaZdoOtgM`9G>r=)SoH9;AB#@+lF8NIiyH+YmIET%3iy3*
zpPQSz)J-8h0g%zOCjjsxu47O=`MvbOdxAnSFUZ9aolC1~SD%Zn0MIn;
z9s>N2UP3$ZI}g6k=Xav3k^5*g8c^JD&DY}^{t@U7RaKwuBve-bWHjwr0A&ArS4$)u
zfr*J$Fb~g^t?d$2DrEuqrT)9`sPO4*(f0
z%h9b|x9$xFL#_M%aVW)N9vaPt>!J|Bj~CLZQypgjQ8s_f;Kalch=jep{=mtih%dJ4plZcipE;@eB)5~m2hLTD1;~k^bZTFdfz?(
z5RsD6vache5DPCK|JclH910tZ6pEI4bB(4FqARMJnnT2v70cBbK&0uP89O?A(`bSU
z)S4fNcq1rE+50|l6#$~_{#i-<@)w^;h@vk`_*h+gQ;3rQ3$yn$a1{UpqX2br
z>;`MHgvXP~WU)2iBE9=FKY>61qElj9{tOC$;zkh~4KZv6cQ$`JjwCxXfTlfyfPXls
zP&n8|
zp;I>gWFydVD*3`X=z3Eqk@#JJ0q{En_&Jd{8^?>F_57+3mO*>R8G(Kmmo)8f5b)1L
z0sy;w%_feC#L`H-umkbx+8ZO$u%j{G2x2Ca{SqL2)Q%2Dp&6e!3bO33X)s7Cn85gV{0gWc<>nn;uZQ4W-{8FfOu3i=Emtg
zfSpB~0@wuZ8)KpzigpXwW|G6aCE`LDCyo4Vh-3?JjW9%47yvay42&$L4FuRI#I5*0
zR*BQpn@}jMTSd-NIz&_#8UT}%QxFPnmkBAu+tk)>8Gl(dm;|}I^=OReRtKc@nJpCu)M?JR;h(Gwvc{Rcdc`1E|-fL
zCh?=S=ge^30)cMmu(44TBrJU2?IK`g!|Q;-|uhT7TQ^aw(#jga3WewtEm(F!o;;Mgair{*@r9#R3-4M2i(TjDQ?njH8U%QAD=z?N{Eep<-LJKqh+;5#G`-LDA~j8DgHD
zJJ`v?!zGheQww|f7dBk{uu5jPa=RXj_|}h|JiJ=^3KuU@!iYf??L=e|VcooXD~lwA
zg;Xk~b)5nDM^RG7^p@$`8cswQ=SW|C58%CWaN;PTlSU1qWGAhMOIsUIt$O6ycUOs>
z5=aW4Hm)BK`29O!<(x_;&LLlR3_rw){MlVk1E!7h(vdJ6j=&KYvWhYY*ypbzNG6bO
z0O*!J))T2?4-$^OhI!!K_8Q_@ptQ9m@T=gEsbgDr0=e9sXwoC#-i(R>XN9S_*U-ob4D$H}Akp~p*w6Gqk>wU&`6+YdNhh+y0AlNV2(Jo$R}
z{Xrj`Eos_)2>5UxRV}H)8N);2FoZ)9VW#@y`XN5|&>gcI~fIhRJs*m*IyXO+X
z1c*q=Xt@^<;oZFm4*NT==Nu+J7z~5o=dG{3UzwZDCRA%>V9y~2hFygKzL!oV&mdyY
zsi!Xhv^Ipx%cs#WU$mNO-pz9)5FYq(i459HN2Y1CE|S=|grkUBT}YPBEX>cp)DPXh
z0nh@0ragp!5B5X2R~!;-Ckgk@o;?0z`zGmVF)&&kQqY
zt!X|Ggit8r`K;i>$lt9^Yk8=ap;jMZc_4a8Ra3VjV&Ch_Kr;XfkjY$50ybXZ?5_PP
zfir=Jf)NOXLclxw!_rv;d}7#H9?FA;m)`*L|8zQiJU57b2L=EW?>EaB2YZZ!dEmvl
zv>8M>Zq{vGE>$bQfhKs*(6f;Ak#u_gt3B&oS79gs?Cb|}4$HVkGGysT5*0R}u2f(}A9rGH`L7vCq{635_?QFw9;1u+gO8MF&B*E8I
zHF@_S>;7IohXw!>xpN-482~h*3TS0
zI{iZ{da?`v%*^KI<|#zwRasU-Rxo!+<5~^qx?Uk_zSD{?|LVrwY9;6Ml{rPB^NONO
zSWWvzrq^sXwwq1qZHYwWvXy$UbOvZMRw|Wd3=?1T`~2gP^217v4?(L|tFOwkxfqQ`
zEe}3u3jo?OuB{cm9}Y)u8A9g6Caq_9fNE{~%XQbp?~rD
z6mMsP8gz7f)NeNRimq2b5s$~eVlnBif?ym$Gfk!@NfkHZ4rva@+}1B69K<}-deG|L9O0sEF(zw#A1;jxW%!n0B8%nx|;tz
zpU?Mqet#h5mLi<&x7lnIbkhGQ9*ce6$$k&&O9%k$xi`4i@Av<;qWH!V2)f=ZRvYy{
zJ(iex%CwgmH^l*RH0D#Frsq5EX${5*`_#f
z!)kH2onaUaUDsbU&BobyJpQc_$vM(o=oz4s2J-oh4-&w=vLwG(QIv#RrsjNv)Ai=6
zVHn>r4Em?p+1Pg+88r(#@gxBD%Ae2YCyC@w0l=?IvUEyOlu22VZIR0`4AKp~WSZs$
zGL0`9M)T2Q$BvaP91q7y*`g@NrMRxcVzKxx!=SrB!rNp?emjE1_KJQ)Nk#-203}5B
zQQ2`)*>&GGiHMyk4I<)y4FYqGOyf1vr0>cyJ{gO}UUgeGtNZ_dseLjVuJC5l00000
LNkvXXu0mjfThfl&
literal 0
HcmV?d00001
diff --git a/examples/image-template/static/tag-0.png b/examples/image-template/static/tag-0.png
new file mode 100644
index 0000000000000000000000000000000000000000..5ab29644a6163c37676cf125ffb0f81600805946
GIT binary patch
literal 1741
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
literal 0
HcmV?d00001
--
GitLab