-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
356 lines (273 loc) · 19.9 KB
/
index.html
File metadata and controls
356 lines (273 loc) · 19.9 KB
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
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
<!DOCTYPE html>
<html lang='zh-CN'>
<head>
<meta name="generator" content="Hexo 6.3.0">
<meta charset="utf-8">
<meta http-equiv='x-dns-prefetch-control' content='on' />
<link rel='dns-prefetch' href='https://cdn.jsdelivr.net'>
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
<link rel='dns-prefetch' href='//unpkg.com'>
<meta name="renderer" content="webkit">
<meta name="force-rendering" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
<meta name="HandheldFriendly" content="True" >
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="theme-color" content="#f8f8f8">
<title>鹦鹉学舌</title>
<meta name="description" content="Android开发与生活的点点滴滴">
<meta property="og:type" content="website">
<meta property="og:title" content="鹦鹉学舌">
<meta property="og:url" content="https://tsparrot.github.io/index.html">
<meta property="og:site_name" content="鹦鹉学舌">
<meta property="og:description" content="Android开发与生活的点点滴滴">
<meta property="og:locale" content="zh_CN">
<meta property="article:author" content="tsparrot">
<meta name="twitter:card" content="summary">
<!-- feed -->
<link rel="stylesheet" href="/css/main.css">
</head>
<body>
<div class='l_body' id='start'>
<aside class='l_left' layout=''>
<header class="header">
<div class="logo-wrap"><a class="title" href="/"><div class="main">鹦鹉学舌</div><div class="sub cap">tsparrot's blog</div></a></div>
<nav class="menu dis-select"><a class="nav-item active" href="/">博客</a><a class="nav-item" href="/about/">关于</a></nav></header>
<div class="widgets">
<div class="widget-wrap" id="markdown"><div class="widget-header cap dis-select"><span class="name">EL PSY CONGROO</span></div><div class="widget-body fs14"><p>Android开发与生活的点点滴滴</p>
</div></div>
<div class="widget-wrap" id="recent"><div class="widget-header cap dis-select"><span class="name">最近更新</span></div><div class="widget-body fs14"><div class="more-item"><a class="title" href="/2022/09/02/ConcatAdapter%E6%BA%90%E7%A0%81%E6%B5%85%E6%9E%90%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9ARecyclerView%E6%9C%BA%E5%88%B6%E5%9B%9E%E9%A1%BE/">ConcatAdapter源码浅析(一):RecyclerView机制回顾</a></div><div class="more-item"><a class="title" href="/2022/08/25/%E5%9C%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B9%8B%E5%A4%96/">在二进制之外</a></div><div class="more-item"><a class="title" href="/2021/07/15/Android%20Java%E5%B1%82%E5%B4%A9%E6%BA%83%E7%9B%91%E6%8E%A7%E6%9C%BA%E5%88%B6%E7%AE%80%E8%BF%B0%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9ACrash%E6%94%B6%E9%9B%86%E7%AF%87/">Android Java层崩溃监控机制简述(一):Crash收集篇</a></div><div class="more-item"><a class="title" href="/2021/07/11/Bitmap%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9A%E5%9C%A8Android%E4%B8%AD%E5%A6%82%E4%BD%95%E5%8E%8B%E7%BC%A9%E4%B8%80%E4%B8%AABitmap/">Bitmap源码学习:在Android中如何压缩一个Bitmap</a></div><div class="more-item"><a class="title" href="/2021/06/22/Android%20%E6%9C%BA%E5%88%B6%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90(%E4%BA%8C):Android%20Util%E7%B3%BB%E5%88%97%E4%B9%8BSparseArray/">Android机制源码分析(二):Android Util系列之SparseArray</a></div></div></div>
</div>
</aside>
<div class='l_main list'>
<header class="header mobile-only">
<div class="logo-wrap"><a class="title" href="/"><div class="main">鹦鹉学舌</div><div class="sub cap">tsparrot's blog</div></a></div>
</header>
<div class='nav-wrap'>
<nav class='sub post cap'>
<a class='active' href='/'>近期发布</a>
<a href='/tags'>标签</a>
<a href='/archives'>归档</a>
</nav>
</div>
<div class="post-list post"><a class="post-card post " href="/2022/09/02/ConcatAdapter%E6%BA%90%E7%A0%81%E6%B5%85%E6%9E%90%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9ARecyclerView%E6%9C%BA%E5%88%B6%E5%9B%9E%E9%A1%BE/">
<article class="md"><h2 class="post-title">ConcatAdapter源码浅析(一):RecyclerView机制回顾</h2><div class="excerpt"><p>分析ConcatAdapter源码之前,先来回顾一下RecyclerView的基本机制:
核心机制RecyclerView 是 Android 开发中常用的用于展示列表和网格布局的控件。它的核心机制主要包括三个组件:LayoutManager(布局管理器)、Adapter(适配器)和ViewHolder(视图持有者)。
LayoutManager(布局管理器)负责决定RecyclerView...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2022-09-02T07:54:00.000Z">2022-09-02</time></span></div></article>
</a><a class="post-card post " href="/2022/08/25/%E5%9C%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B9%8B%E5%A4%96/">
<article class="md"><h2 class="post-title">在二进制之外</h2><div class="excerpt"><p>简单记录在LinkedIn,Engineer在编程之外的一些工作,信息已脱敏。
As a POC在Linkedin的业务迭代过程中,每个feature都会有一个POC,虽然全称是Point of Contact,可以直译为联络人/接口人,但其角色更接近于feature的owner,负责统筹开发,和其他团队沟通明确需求细节,保证项目交付。我对POC职责的理解:
在feature开发之...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2022-08-25T07:54:00.000Z">2022-08-25</time></span></div></article>
</a><a class="post-card post " href="/2021/07/15/Android%20Java%E5%B1%82%E5%B4%A9%E6%BA%83%E7%9B%91%E6%8E%A7%E6%9C%BA%E5%88%B6%E7%AE%80%E8%BF%B0%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9ACrash%E6%94%B6%E9%9B%86%E7%AF%87/">
<article class="md"><h2 class="post-title">Android Java层崩溃监控机制简述(一):Crash收集篇</h2><div class="excerpt"><p>常见的Android崩溃有两类,一类是Java Exception异常,一类是Native Signal异常。我们将围绕这两类异常进行。对于很多基于Unity、Cocos平台的游戏,还会有C#、JavaScript、Lua等的异常,这里不做讨论。
Java代码的崩溃机制及实现Android应用程序的开发是基于Java语言的,所以首先来分析第一类Android崩溃Java Exception。...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-07-14T16:00:00.000Z">2021-07-15</time></span></div></article>
</a><a class="post-card post " href="/2021/07/11/Bitmap%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0%EF%BC%88%E4%B8%80%EF%BC%89%EF%BC%9A%E5%9C%A8Android%E4%B8%AD%E5%A6%82%E4%BD%95%E5%8E%8B%E7%BC%A9%E4%B8%80%E4%B8%AABitmap/">
<article class="md"><h2 class="post-title">Bitmap源码学习:在Android中如何压缩一个Bitmap</h2><div class="excerpt"><p>Bitmap.createScaledBitmap源码分析123456789101112131415161718192021public static Bitmap createScaledBitmap(@NonNull Bitmap src, int dstWidth, int dstHeight, boolean filter) { // 创...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-07-10T16:00:00.000Z">2021-07-11</time></span></div></article>
</a><a class="post-card post " href="/2021/06/22/Android%20%E6%9C%BA%E5%88%B6%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90(%E4%BA%8C):Android%20Util%E7%B3%BB%E5%88%97%E4%B9%8BSparseArray/">
<article class="md"><h2 class="post-title">Android机制源码分析(二):Android Util系列之SparseArray</h2><div class="excerpt"><p>碎碎念临近毕业,在成为一名全职android开发工程师之前,重新回顾那些重要的基础知识,这是第二篇
稀疏数组为了了解SparseArray和ArrayList的区别,需要了解一些前置知识:
稀疏数组(Sparse Array)是指数组中大部分元素为默认值(通常为0或者null)的数组。与稠密数组(Dense Array)相比,稀疏数组只存储非默认值的元素及其位置信息,从而减少了存储空间的占用...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-06-21T16:00:00.000Z">2021-06-22</time></span></div></article>
</a><a class="post-card post " href="/2021/06/15/Android%20%E6%9C%BA%E5%88%B6%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90(%E4%B8%80):%20%E4%BA%8B%E4%BB%B6%E5%88%86%E5%8F%91%E6%BA%90%E7%A0%81%E6%B5%85%E6%9E%90/">
<article class="md"><h2 class="post-title">Android机制源码分析(一):事件分发源码浅析</h2><div class="excerpt"><p>碎碎念临近毕业,在成为一名全职android开发工程师之前,重新回顾那些重要的基础知识,这是第一篇
关键流程Android 的事件分发过程主要涉及三个方法:dispatchTouchEvent(), onInterceptTouchEvent(), 和 onTouchEvent()。事件分发过程遵循以下顺序:
dispatchTouchEvent() :事件分发从根视图(通常是 Activ...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-06-14T16:00:00.000Z">2021-06-15</time></span></div></article>
</a><a class="post-card post " href="/2021/05/30/Android%20SDK%20Version%E5%B0%8F%E7%BB%93/">
<article class="md"><h2 class="post-title">Android SDK Version小结</h2><div class="excerpt"><p>基本概念应用向前兼容性亦作向下兼容,应用向前兼容(forward, 代指未来)更新版本的系统,几乎所有对框架 API 的更改都是新增更改,所以使用 API 任何给定版本(其 API 级别所指定版本)开发的 Android 应用均向前兼容更新版本的 Android 平台以及更高 API 级别:即在为低版本API开发(target sdkversion 较低)的应用也可在高版本API 平台上正常...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-05-29T16:00:00.000Z">2021-05-30</time></span></div></article>
</a><a class="post-card post " href="/2021/05/23/%E4%BB%8EJVM%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6%E6%9C%BA%E5%88%B6%E7%9C%8BAndroid%E5%86%85%E5%AD%98%E6%B3%84%E9%9C%B2/">
<article class="md"><h2 class="post-title">从JVM垃圾回收机制看Android内存泄露</h2><div class="excerpt"><p>JVM垃圾回收机制JVM内存模型了解JVM垃圾回收机制之前,有必要先介绍JVM的内存模型机制,以阐明我们常说的JVM垃圾回收机制是从何处回收垃圾。
注:这里提到的JVM内存模型和java内存模型并不是一回事,注意区分
在Java中,我们的源代码编译后会生成以.class为后缀的字节码(在Android中会通过dx工具进一步翻译、重构、解释、压缩成Android虚拟机支持的Dex文件)
Cla...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-05-22T16:00:00.000Z">2021-05-23</time></span></div></article>
</a><a class="post-card post " href="/2021/05/20/Android%20Studio%20Sync%20Failed%E8%AE%B0%E5%BD%95/">
<article class="md"><h2 class="post-title">Android Studio Sync Failed记录</h2><div class="excerpt"><p>背景介绍修复系统后重新安装了Android Studio,例行Hello World, 下载gradle插件时久违地碰到了Sync Failed,回想全面爬梯前被这个问题支配的恐惧,觉得有必要单开一帖记录一下。
网络环境
已爬梯,全局模式。
未配置Android Studio内部爬梯功能
build.gradle为默认配置
12345678910111213141516171819202...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-05-19T18:47:00.000Z">2021-05-20</time></span></div></article>
</a><a class="post-card post " href="/2021/03/17/MVVM%E8%AE%BE%E8%AE%A1%E6%9E%B6%E6%9E%84%E6%B5%85%E6%9E%90/">
<article class="md"><h2 class="post-title">MVVM设计架构浅析</h2><div class="excerpt"><p>实习时用的是MVP架构,但Google官方本身已经将MVVM(Model-View-ViewModel)MV作为推荐的设计架构,在JetPack当中也推出了一系列组件来支持,简单谈一下我对MVVM的理解
MVVM架构特点
分离关注点:MVVM 将用户界面的表示(View)与业务逻辑和数据(ViewModel)分离开来,使得代码结构清晰,易于维护和扩展。ViewModel 作为连接 View ...</p></div><div class="meta cap"><span class="cap" id="post-meta">发布于 <time datetime="2021-03-17T04:00:00.000Z">2021-03-17</time></span></div></article>
</a></div>
<div class='paginator-wrap dis-select'>
<a class='paginator prev disable' href='/'>
<img src='https://cdn.jsdelivr.net/gh/cdn-x/placeholder@1.0.1/arrow/f049bbd4e88ec.svg'/>
</a>
<div class='paginator current'>
1<span class='sep'></span>3
</div>
<a class='paginator next' href='/page/2/'>
<img src='https://cdn.jsdelivr.net/gh/cdn-x/placeholder@1.0.1/arrow/064b95430caf4.svg'/>
</a>
</div>
<footer class="page-footer reveal fs12"><hr><div class="text"><p>本博客所有文章除特别声明外,均采用 <a target="_blank" rel="noopener" href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a> 许可协议,转载请注明出处。</p>
<p>本站由 <a href="https://tsparrot.github.io/">@tsparrot</a> 创建,使用 <a target="_blank" rel="noopener" href="https://github.com/xaoxuu/hexo-theme-stellar/tree/1.7.0" title="v1.7.0">Stellar</a> 作为主题。</p>
</div></footer>
<div class='float-panel mobile-only blur' style='display:none'>
<button type='button' class='sidebar-toggle mobile' onclick='sidebar.toggle()'>
<svg class="icon" style="width: 1em; height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="15301"><path d="M566.407 808.3c26.9-0.1 49.3-20.8 51.6-47.6-1.9-27.7-23.9-49.7-51.6-51.6h-412.6c-28.2-1.4-52.6 19.5-55.5 47.6 2.3 26.8 24.6 47.5 51.6 47.6h416.5v4z m309.3-249.9c26.9-0.1 49.3-20.8 51.6-47.6-2.2-26.8-24.6-47.5-51.6-47.6h-721.9c-27.7-2.8-52.5 17.4-55.3 45.1-0.1 0.8-0.1 1.7-0.2 2.5 0.9 27.2 23.6 48.5 50.7 47.6H875.707z m-103.1-245.9c26.9-0.1 49.3-20.8 51.6-47.6-0.4-28.3-23.2-51.1-51.5-51.6h-618.9c-29.5-1.1-54.3 21.9-55.5 51.4v0.2c1.4 27.8 25.2 49.2 53 47.8 0.8 0 1.7-0.1 2.5-0.2h618.8z" p-id="15302"></path><path d="M566.407 808.3c26.9-0.1 49.3-20.8 51.6-47.6-1.9-27.7-23.9-49.7-51.6-51.6h-412.6c-28.2-1.4-52.6 19.5-55.5 47.6 1.9 27.7 23.9 49.7 51.6 51.6h416.5z m309.3-249.9c26.9-0.1 49.3-20.8 51.6-47.6-2.2-26.8-24.6-47.5-51.6-47.6h-721.9c-27.7-2.8-52.5 17.4-55.3 45.1-0.1 0.8-0.1 1.7-0.2 2.5 0.9 27.2 23.6 48.5 50.7 47.6H875.707z m-103.1-245.9c26.9-0.1 49.3-20.8 51.6-47.6-0.4-28.3-23.2-51.1-51.5-51.6h-618.9c-29.5-1.1-54.3 21.9-55.5 51.4v0.2c1.4 27.8 25.2 49.2 53 47.8 0.8 0 1.7-0.1 2.5-0.2h618.8z" p-id="15303"></path></svg>
</button>
</div>
</div>
</div>
<div class='scripts'>
<script type="text/javascript">
stellar = {
// 懒加载 css https://github.com/filamentgroup/loadCSS
loadCSS: (href, before, media, attributes) => {
var doc = window.document;
var ss = doc.createElement("link");
var ref;
if (before) {
ref = before;
} else {
var refs = (doc.body || doc.getElementsByTagName("head")[0]).childNodes;
ref = refs[refs.length - 1];
}
var sheets = doc.styleSheets;
if (attributes) {
for (var attributeName in attributes) {
if (attributes.hasOwnProperty(attributeName)) {
ss.setAttribute(attributeName, attributes[attributeName]);
}
}
}
ss.rel = "stylesheet";
ss.href = href;
ss.media = "only x";
function ready(cb) {
if (doc.body) {
return cb();
}
setTimeout(function () {
ready(cb);
});
}
ready(function () {
ref.parentNode.insertBefore(ss, before ? ref : ref.nextSibling);
});
var onloadcssdefined = function (cb) {
var resolvedHref = ss.href;
var i = sheets.length;
while (i--) {
if (sheets[i].href === resolvedHref) {
return cb();
}
}
setTimeout(function () {
onloadcssdefined(cb);
});
};
function loadCB() {
if (ss.addEventListener) {
ss.removeEventListener("load", loadCB);
}
ss.media = media || "all";
}
if (ss.addEventListener) {
ss.addEventListener("load", loadCB);
}
ss.onloadcssdefined = onloadcssdefined;
onloadcssdefined(loadCB);
return ss;
},
// 从 butterfly 和 volantis 获得灵感
loadScript: (src, opt) => new Promise((resolve, reject) => {
var script = document.createElement('script');
script.src = src;
if (opt) {
for (let key of Object.keys(opt)) {
script[key] = opt[key]
}
} else {
// 默认异步,如果需要同步,第二个参数传入 {} 即可
script.async = true
}
script.onerror = reject
script.onload = script.onreadystatechange = function() {
const loadState = this.readyState
if (loadState && loadState !== 'loaded' && loadState !== 'complete') return
script.onload = script.onreadystatechange = null
resolve()
}
document.head.appendChild(script)
}),
// https://github.com/jerryc127/hexo-theme-butterfly
jQuery: (fn) => {
if (typeof jQuery === 'undefined') {
stellar.loadScript(stellar.plugins.jQuery).then(fn)
} else {
fn()
}
}
};
stellar.github = 'https://github.com/xaoxuu/hexo-theme-stellar/tree/1.7.0';
stellar.config = {
date_suffix: {
just: '刚刚',
min: '分钟前',
hour: '小时前',
day: '天前',
month: '个月前',
},
};
// required plugins (only load if needs)
stellar.plugins = {
jQuery: 'https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js',
sitesjs: '/js/plugins/sites.js',
friendsjs: '/js/plugins/friends.js',
};
// optional plugins
if ('true' == 'true') {
stellar.plugins.lazyload = Object.assign({"enable":true,"js":"https://cdn.jsdelivr.net/npm/vanilla-lazyload@17.3.1/dist/lazyload.min.js","transition":"blur"});
}
if ('true' == 'true') {
stellar.plugins.swiper = Object.assign({"enable":true,"css":"https://unpkg.com/swiper@6/swiper-bundle.min.css","js":"https://unpkg.com/swiper@6/swiper-bundle.min.js"});
}
if ('' == 'true') {
stellar.plugins.scrollreveal = Object.assign({"enable":null,"js":"https://cdn.jsdelivr.net/npm/scrollreveal@4.0.9/dist/scrollreveal.min.js","distance":"8px","duration":500,"interval":100,"scale":1});
}
if ('true' == 'true') {
stellar.plugins.preload = Object.assign({"enable":true,"service":"flying_pages","instant_page":"https://cdn.jsdelivr.net/gh/volantis-x/cdn-volantis@4.1.2/js/instant_page.js","flying_pages":"https://cdn.jsdelivr.net/gh/gijo-varghese/flying-pages@2.1.2/flying-pages.min.js"});
}
if ('true' == 'true') {
stellar.plugins.fancybox = Object.assign({"enable":true,"js":"https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.umd.js","css":"https://cdn.jsdelivr.net/npm/@fancyapps/ui@4.0/dist/fancybox.css","selector":".swiper-slide img"});
}
if ('false' == 'true') {
stellar.plugins.heti = Object.assign({"enable":false,"css":"https://unpkg.com/heti/umd/heti.min.css","js":"https://unpkg.com/heti/umd/heti-addon.min.js"});
}
</script>
<!-- required -->
<script src="/js/main.js" async></script>
<!-- optional -->
<script>
function loadBeaudar() {
const els = document.querySelectorAll("#comments #beaudar");
if (els.length === 0) return;
els.forEach((el, i) => {
try {
el.innerHTML = '';
} catch (error) {
console.log(error);
}
var script = document.createElement('script');
script.src = 'https://beaudar.lipk.org/client.js';
script.async = true;
for (let key of Object.keys(el.attributes)) {
let attr = el.attributes[key];
if (['class', 'id'].includes(attr.name) === false) {
script.setAttribute(attr.name, attr.value);
}
}
el.appendChild(script);
});
}
window.addEventListener('DOMContentLoaded', (event) => {
loadBeaudar();
});
</script>
<!-- inject -->
</div>
</body>
</html>