diff --git a/ui/hanlinyuan-bindings.js b/ui/hanlinyuan-bindings.js
index 71ea82a..1aab4d1 100644
--- a/ui/hanlinyuan-bindings.js
+++ b/ui/hanlinyuan-bindings.js
@@ -1 +1 @@
-const _0x13c5aa=_0x46ab;function _0x26e1(){const _0x2938be=['》的批量编纂任务已完成。成功:\x20','hly-include-user','style','\x20个Rerank模型。','宝库已清空。','apiKey','hly-manual-text','querySelectorAll','\x20个局部知识库吗?此操作无法恢复!','totalVectors','通行令牌\x20(API\x20Key):','移动知识库\x20','删除失败:\x20','预览内容已更新,可随时开始凝识。','chunkSize','sources','{{chat_text}}','signal','】移动到【','\x20个知识块','hly-locked-status','saveHLYSettings','target','\x20个局部知识库均已成功删除。','removeEventListener','24392079XYxPbE','.hly-hist-entry-checkbox','任务完成!成功录入\x20','\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20','tags','[翰林院-枢纽]\x20编纂过程发生严重错误:','\x20失败:\x20','翰林院启奏','localToGlobal','【手动存档】所有设定已存档封印。','圣旨已下','checkbox','您确定要永久删除【当前角色】的全部\x20','hly-unified-injection-depth','clearJob','>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20','已采集\x20','novel','rerank','getVectorCount','checked','[翰林院-枢纽]\x20加载书库列表失败:','3174224fiPGcE','fa-exclamation-triangle','400393eayTjI',')\x20已被删除','getChatId','processed','hly-kb-delete-btn','hly-rerank-model','\x20条消息,开始凝识...','会话已解锁,将跟随当前角色。','previousElementSibling','message','翰林院使用教程','未检测到预览文本,按标准流程采集消息...','hly-retrieval-enabled','val','\x20楼:\x20[','local_proxy','\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20第\x20','\x22\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-send-date=\x22','解锁会话','scrollTop','every','change','hly-layer-end','processCondensation','hlyLog','[翰林院-枢纽]\x20未能获取SillyTavern上下文,绑定失败。','。进度已保存,可稍后重试。','embeddingModel','\x20个条目进行编纂...','\x22\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20data-is-user=\x22','is_user','[data-setting-key]','delete','hly-api-key',')\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20','批量编纂任务已完成。','请输入您的Google\x20API\x20Key','toggleSessionLock','hly-hist-entry-multiselect-btn','find','startHLYHistoriography','当前角色','log-error','disabled','getGlobalKnowledgeBases','\x20条忆识。','\x22\x20placeholder=\x22开始字符,\x20如\x20\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20',_0x4963e1=_0x5ebf60['map'](_0x60a6d7)[_0x20f51a(0x2c3)](''),_0x32d4d4='\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
在这里定义需要从提取内容中排除的文本片段。例如,排除HTML注释,可以设置开始字符为\x20``。
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
'+_0x4963e1+_0x20f51a(0x392);showHtmlModal('编辑内容排除规则',_0x32d4d4,{'okText':'保存规则','onOk':_0x44c19c=>{const _0xcf3c95=_0x20f51a,_0x6ee4f1=[];_0x44c19c[_0xcf3c95(0x397)](_0xcf3c95(0x2f2))['each'](function(){const _0x14c552=_0xcf3c95,_0x10f34d=$(this)[_0x14c552(0x397)](_0x14c552(0x23e))['eq'](0x0)['val']()[_0x14c552(0x322)](),_0x3154b9=$(this)[_0x14c552(0x397)](_0x14c552(0x23e))['eq'](0x1)[_0x14c552(0x378)]()[_0x14c552(0x322)]();_0x10f34d&&_0x3154b9&&_0x6ee4f1[_0x14c552(0x325)]({'start':_0x10f34d,'end':_0x3154b9});}),updateAndSaveSetting(_0xcf3c95(0x2c9),_0x6ee4f1),toastr[_0xcf3c95(0x1ea)](_0xcf3c95(0x2bf),_0xcf3c95(0x1dc));}});const _0x1bdae1=document[_0x20f51a(0x2c1)](_0x20f51a(0x327)),_0x4780c4=_0x1bdae1[_0x20f51a(0x1a8)](_0x20f51a(0x29b));_0x1bdae1[_0x20f51a(0x1a8)](_0x20f51a(0x270))['addEventListener'](_0x20f51a(0x273),()=>{const _0x5dc824=_0x20f51a,_0x41ff0e=_0x4780c4[_0x5dc824(0x2aa)][_0x5dc824(0x2b7)],_0x1712e0=_0x60a6d7({'start':'','end':''},_0x41ff0e);_0x4780c4['insertAdjacentHTML'](_0x5dc824(0x2a3),_0x1712e0);}),_0x4780c4['addEventListener']('click',_0x387845=>{const _0x4187bb=_0x20f51a;_0x387845['target'][_0x4187bb(0x2ce)][_0x4187bb(0x2cf)](_0x4187bb(0x2e5))&&_0x387845[_0x4187bb(0x350)]['closest']('.hly-exclusion-rule-row')[_0x4187bb(0x1cb)]();});}function previewCondensation(){const _0x81c39d=_0x13c5aa,_0x1d0fd1=document[_0x81c39d(0x2c1)]('hly-condensation-results');try{const _0x118734=_0x3ea5ae[_0x81c39d(0x292)](),_0x349fb4=_0x118734[_0x81c39d(0x23c)]['exclusionRules']||[],_0x535657={'user':document[_0x81c39d(0x2c1)](_0x81c39d(0x33b))[_0x81c39d(0x367)],'ai':document[_0x81c39d(0x2c1)](_0x81c39d(0x216))[_0x81c39d(0x367)]},_0x133ede=document[_0x81c39d(0x2c1)](_0x81c39d(0x22e))[_0x81c39d(0x367)],_0x22e611=_0x133ede?document['getElementById'](_0x81c39d(0x29a))['value']['split'](',')[_0x81c39d(0x288)](_0xafe4f7=>_0xafe4f7[_0x81c39d(0x322)]())[_0x81c39d(0x2d1)](Boolean):[],_0x5c94bd=_0x3ea5ae['getMessagesForCondensation'](_0x535657);if(!_0x5c94bd||_0x5c94bd[_0x81c39d(0x2b7)]===0x0){_0x1d0fd1['textContent']=_0x81c39d(0x268),toastr['warning'](_0x81c39d(0x390),_0x81c39d(0x35a));return;}const _0x5b7d3e=getContext()[_0x81c39d(0x1da)],_0x104de7=_0x5c94bd['map']((_0x25c477,_0x2dfcf0)=>{const _0xd5f7d0=_0x81c39d;let _0x466c19;if(_0x25c477['is_user'])_0x466c19=_0x25c477[_0xd5f7d0(0x30a)];else{if(_0x133ede&&_0x22e611[_0xd5f7d0(0x2b7)]>0x0){const _0x3fe09d=extractBlocksByTags(_0x25c477[_0xd5f7d0(0x30a)],_0x22e611);_0x466c19=_0x3fe09d[_0xd5f7d0(0x2c3)]('\x0a\x0a');}else _0x466c19=_0x25c477['mes'];_0x466c19=applyExclusionRules(_0x466c19,_0x349fb4);}const _0x157fd3=_0x5b7d3e[_0xd5f7d0(0x26f)](_0x5996d3=>_0x5996d3===_0x25c477),_0x54f592=_0x157fd3!==-0x1?_0x157fd3+0x1:-0x1;return{'id':_0xd5f7d0(0x2f0)+_0x2dfcf0,'name':_0x25c477[_0xd5f7d0(0x1c4)],'content':_0x466c19[_0xd5f7d0(0x322)](),'floor':_0x54f592,'is_user':_0x25c477['is_user'],'send_date':_0x25c477[_0xd5f7d0(0x30d)]};})[_0x81c39d(0x2d1)](_0x2a8117=>_0x2a8117['content']);if(_0x104de7['length']===0x0){_0x1d0fd1[_0x81c39d(0x267)]=_0x81c39d(0x1f6),toastr[_0x81c39d(0x223)]('根据标签提取或内容排除条件,未找到任何有效内容。','翰林院启奏');return;}const _0x1d6eaf=_0x104de7['map']((_0xf4dbe5,_0x573043)=>'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
'+_0xf4dbe5['content']+'\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20')[_0x81c39d(0x2c3)]('');showHtmlModal(_0x81c39d(0x27a),_0x81c39d(0x235)+_0x1d6eaf+'
',{'okText':_0x81c39d(0x252),'onOk':_0x476935=>{const _0x126247=_0x81c39d,_0x1d84ac=[];_0x476935['find']('.hly-preview-item-v2')['each'](function(){const _0x59c4bf=_0x46ab,_0x2f6950=$(this)[_0x59c4bf(0x397)]('.hly-preview-textarea'),_0x51f124=_0x2f6950[_0x59c4bf(0x378)]();_0x51f124[_0x59c4bf(0x322)]()&&_0x1d84ac[_0x59c4bf(0x325)]({'mes':_0x51f124,'is_user':_0x2f6950[_0x59c4bf(0x304)](_0x59c4bf(0x1a4)),'send_date':_0x2f6950[_0x59c4bf(0x304)](_0x59c4bf(0x1b6)),'floor':_0x2f6950['data'](_0x59c4bf(0x21c))});}),_0x1d0fd1[_0x126247(0x1f3)][_0x126247(0x1f7)]=JSON[_0x126247(0x28d)](_0x1d84ac);const _0x5965e9=document[_0x126247(0x2c1)](_0x126247(0x2c6))[_0x126247(0x31b)],_0x34e1b4=document[_0x126247(0x2c1)](_0x126247(0x381))[_0x126247(0x31b)];_0x1d0fd1[_0x126247(0x267)]=_0x126247(0x2eb)+_0x5965e9+_0x126247(0x226)+_0x34e1b4+'\x20楼的内容(共\x20'+_0x1d84ac[_0x126247(0x2b7)]+_0x126247(0x314),toastr['success'](_0x126247(0x347),'圣旨已达');}}),$(_0x81c39d(0x2fd))['on']('click',function(_0x1fdb73){const _0x39e4eb=_0x81c39d;_0x1fdb73[_0x39e4eb(0x20f)]();const _0x59f6b3=$(this)['data'](_0x39e4eb(0x350));$('#'+_0x59f6b3)[_0x39e4eb(0x1cb)]();});}catch(_0x1ac6f9){console['error'](_0x81c39d(0x23a),_0x1ac6f9),_0x1d0fd1['textContent']=_0x81c39d(0x1c8)+_0x1ac6f9['message'],toastr['error'](_0x81c39d(0x1c8)+_0x1ac6f9[_0x81c39d(0x374)],_0x81c39d(0x295));}}function _0x46ab(_0x1d1517,_0x14bd99){const _0x26e1e1=_0x26e1();return _0x46ab=function(_0x46ab60,_0x28dc1f){_0x46ab60=_0x46ab60-0x1a1;let _0x2c353d=_0x26e1e1[_0x46ab60];return _0x2c353d;},_0x46ab(_0x1d1517,_0x14bd99);}function log(_0xb1ce57,_0x5f470a='info'){const _0x17349b=_0x13c5aa,_0x76705c=document['getElementById']('hly-log-output');if(!_0x76705c)return;const _0xdfc310=document[_0x17349b(0x1ac)]('p'),_0x534a6c=new Date()[_0x17349b(0x2bd)]();let _0x238f63=_0x17349b(0x1d0),_0x371921=_0x17349b(0x26a);switch(_0x5f470a){case'success':_0x238f63='fa-check-circle',_0x371921=_0x17349b(0x205);break;case _0x17349b(0x275):_0x238f63=_0x17349b(0x251),_0x371921=_0x17349b(0x39a);break;case'warn':_0x238f63=_0x17349b(0x36a),_0x371921=_0x17349b(0x1a3);break;}_0xdfc310[_0x17349b(0x2c0)]=_0x17349b(0x28a)+_0x371921,_0xdfc310[_0x17349b(0x2dd)]=_0x17349b(0x213)+_0x238f63+'\x22>\x20['+_0x534a6c+']\x20'+_0xb1ce57;const _0x3a997a=_0x76705c[_0x17349b(0x1a8)](_0x17349b(0x1f2));_0x3a997a&&_0x3a997a[_0x17349b(0x1cb)](),_0x76705c[_0x17349b(0x2ab)](_0xdfc310),_0x76705c[_0x17349b(0x37e)]=_0x76705c[_0x17349b(0x1bd)];}async function ingestManualText(){const _0x199cc5=_0x13c5aa,_0x2b971a=document[_0x199cc5(0x2c1)](_0x199cc5(0x340)),_0x2a4c37=_0x2b971a[_0x199cc5(0x31b)][_0x199cc5(0x322)]();if(!_0x2a4c37){toastr[_0x199cc5(0x223)](_0x199cc5(0x27b),_0x199cc5(0x35a)),log(_0x199cc5(0x1d4),_0x199cc5(0x2da));return;}log(_0x199cc5(0x1b3)+_0x2a4c37[_0x199cc5(0x2b7)],_0x199cc5(0x239)),toastr[_0x199cc5(0x239)](_0x199cc5(0x1f8),'圣旨');try{const _0x531305=await _0x3ea5ae[_0x199cc5(0x227)](_0x2a4c37,_0x199cc5(0x1ba),{'sourceName':_0x199cc5(0x1db)});if(_0x531305[_0x199cc5(0x1ea)])toastr['success'](_0x199cc5(0x1ed)+_0x531305['count']+_0x199cc5(0x39d),_0x199cc5(0x32f)),log(_0x199cc5(0x22a)+_0x531305['count']+_0x199cc5(0x39d),_0x199cc5(0x1ea)),_0x2b971a[_0x199cc5(0x31b)]='';else throw new Error(_0x531305[_0x199cc5(0x275)]||_0x199cc5(0x21b));}catch(_0x344687){console[_0x199cc5(0x275)](_0x199cc5(0x2d2),_0x344687),toastr[_0x199cc5(0x275)](_0x199cc5(0x260)+_0x344687[_0x199cc5(0x374)],_0x199cc5(0x295)),log('手动录入失败:\x20'+_0x344687['message'],_0x199cc5(0x275));}finally{await updatePanelStatus();}}
+const _0x28d2da=_0x219d;function _0x219d(_0xa49005,_0x12ee67){const _0x1a1560=_0x1a15();return _0x219d=function(_0x219db0,_0x20a982){_0x219db0=_0x219db0-0x1f3;let _0x52a346=_0x1a1560[_0x219db0];return _0x52a346;},_0x219d(_0xa49005,_0x12ee67);}(function(_0xc807d3,_0x2667b8){const _0x4a8bb6=_0x219d,_0x181744=_0xc807d3();while(!![]){try{const _0x5dec87=parseInt(_0x4a8bb6(0x31a))/0x1*(-parseInt(_0x4a8bb6(0x200))/0x2)+parseInt(_0x4a8bb6(0x35a))/0x3+parseInt(_0x4a8bb6(0x3ba))/0x4*(-parseInt(_0x4a8bb6(0x318))/0x5)+parseInt(_0x4a8bb6(0x2d9))/0x6+-parseInt(_0x4a8bb6(0x291))/0x7+parseInt(_0x4a8bb6(0x23a))/0x8+parseInt(_0x4a8bb6(0x3ab))/0x9;if(_0x5dec87===_0x2667b8)break;else _0x181744['push'](_0x181744['shift']());}catch(_0x3cd810){_0x181744['push'](_0x181744['shift']());}}}(_0x1a15,0x789fc));import{getContext}from'/scripts/extensions.js';import*as _0x5a0ed1 from'../core/rag-processor.js';import*as _0x798f38 from'../core/historiographer.js';import*as _0x4966d0 from'../core/utils/context-utils.js';import*as _0x54c7cd from'../core/ingestion-manager.js';import{showContentModal,showHtmlModal}from'./page-window.js';function _0x1a15(){const _0x1e2eb6=['未找到符合条件的消息。','.hly-nav-item','options','processCondensation','{{chat_text}}','target','】吗?','string','stringify','fetchEmbeddingModels','[翰林院-枢纽]\x20未能获取SillyTavern上下文,绑定失败。','\x20个知识库\x20(范围:\x20','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x20[','selectedIndex','正在查询宝库状态...','
','】移动到【','hly-tag-input','entries','hly-kb-list-local','未能获取到任何模型。','advanced','\x20块继续录入。','hly-retrieval-notify','
','scrollTop','hly-api-endpoint','generateJobId','scrollHeight','hly-kb-delete-btn','loadProgress','preventDefault','用户尝试录入空文本。','1586568LlkrfG','embeddingModel','trim','hly-current-character-name','未能获取到任何Rerank模型。','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
获取失败','知识库\x20','dataset','[翰林院-枢纽]\x20编纂过程发生严重错误:','hly-kb-list-item','hly-custom-endpoint-docket','>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20','解锁会话','任务已中止。','#hly-add-rule-btn','[自动保存]\x20设置项\x20\x27','finalMessages','messageTypes','hly-kb-move-all-to-global','hly-hist-entry-multiselect-options','
未找到匹配的条目
','开始对《','请先选择一个书库并至少选择一个要编纂的条目。','children','filter',')\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20','录入内容不能为空。','top_n','请至少选择一个知识库进行操作。','info','hly-kb-delete-local-btn','hly-injection-source-selector','\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20第\x20','[翰林院-枢纽]\x20核心法典未能提供初始化圣旨!','manual','\x0a\x20\x20\x20\x20\x20\x20\x20\x20','all','\x20个局部知识库均已成功删除。','click','[翰林院-枢纽]\x20加载书库列表失败:','hly-overlap-size','hly-rerank-api-key','removeEventListener','批量编纂任务已完成,但有部分错误。','.hly-hist-entry-checkbox','圣谕不明','hly-unified-template-notes','display','checked','[断点续传]\x20用户选择放弃旧任务\x20','9229779fwRJyc','tags','知识库【','html','toFixed','kbId','push','content','text','processed','此书库为空','...','清空宝库失败。','\x22\x20placeholder=\x22开始字符串,\x20如\x20`。
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','您确定要将所有设定恢复为出厂默认值吗?','purgeHLYStorage','您确定要将知识库【','comment','
','\x20个局部知识库...','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
','previewHLYCondensation','input','{{lorebook_text}}','\x20楼:\x20[','预览并编辑凝识内容','您确定要将选中的\x20','2898488kmGHZn','condensationHistory','
','warn','send-date','.hly-kb-rename-btn','saveHLYSettings','hly-entry-search','】已删除。','hly-chunk-size','删除局部知识库\x20','fa-times-circle','exclusionRules','getLocalKnowledgeBases','hanlinyuan-ingest-progress-bar','删除失败:\x20','获取模型失败:\x20','翰林院设定已重置为初始状态。','当前角色','allWorldbooks','未知错误','\x20个知识块','》的批量编纂任务已完成。成功:\x20','every','includes','\x20楼已成功凝识,新增\x20','processedChunks','%。是否从上次中断之处继续?','.depth','stopPropagation','\x20楼到第\x20','ingestHLYManualText','chat_history','apiEndpoint','finalText','\x0a--------------------\x0aAPI端点:\x20','value','move','\x20个知识库从\x20','hly-embedding-model','.count\x22]','hanlinyuan-ingest-novel-file-name','hly-historiography-results','closest','N/A','globalToLocal','获取Rerank模型失败:\x20','hly-independent-chat-memory-enabled','find','加载书库列表失败:\x20','hly-rerank-notify','user','fa-check-circle','\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20