微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 阿里巴巴AMAP实验室造出的"无限世界":一块消费级显卡,让你在AI生成的世界里永远走下去

阿里巴巴AMAP实验室造出的"无限世界":一块消费级显卡,让你在AI生成的世界里永远走下去

2026-07-31 16:10
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-07-31 16:10 科技行者

这项由阿里巴巴集团AMAP CV Lab(高德地图计算机视觉实验室)完成的研究,以技术报告的形式于2026年7月发布,论文编号为arXiv:2607.19191。感兴趣的读者可以通过这个编号在arXiv学术平台上查阅完整原文。

**一、普通人买一张游戏显卡,就能运行AI造的"活世界"?**

先从一个场景说起。你坐在家里,打开电脑,进入一个从未见过的世界——不是预先制作好的游戏地图,而是由人工智能在你操作的同时实时"想象"出来的场景。你按下W键向前走,AI就实时生成你前方的道路;你按下J键转动视角,AI就即时渲染你转头后看到的风景。更神奇的是,这个世界可以永远延伸下去,你走多久它就生成多久——哪怕连续走上24小时,它也不会崩塌或重复。

这不是科幻,而是阿里巴巴AMAP CV Lab在2026年7月发布的研究成果ABot-World-0所实现的能力。研究团队把这套系统部署在一张NVIDIA RTX 5090消费级桌面显卡上,它能以720P(约130万像素)的画质、每秒最高16帧的速度持续生成视频画面,从你按下按键到第一帧新画面出现,延迟只有1.2秒,而显卡内存峰值占用约为19GB。

你可能想问:这和普通的AI视频生成有什么不同?区别就像"拍照"和"开车"的区别。普通AI视频生成就像拍一段固定剧本的短片,拍完就结束了。而ABot-World-0更像是坐进一辆真正的汽车,方向盘在你手里,车窗外的风景由AI实时创造,你可以随时左转、右转、停车、加速,而且这条路永远没有尽头。

**二、"活世界"背后的四大难题:为什么造它这么难?**

要理解这项研究解决了什么问题,先要明白造一个"可以永远互动的AI世界"面临哪些障碍。

第一个难题是数据从哪里来。教AI学习世界规律需要大量视频素材,而且这些视频必须和操作指令严格对应——你按了什么键,画面发生了什么变化,这些都要精确记录。互联网上有海量视频,但几乎没有人拍视频时同时记录了自己的键盘操作;游戏录像有精确的键位记录,但游戏画面风格单一;3D仿真引擎能精确控制一切,但费时费力。如何把这三类来源的数据拼成一个够大、够多样的训练集,是第一道难关。

第二个难题是如何理解"控制"的含义。镜头推进是"向前走",还是"摄像机缩放"?转头是"角色旋转",还是"摄像机环绕"?不同数据来源对"控制"的定义五花八门,如何统一成一套AI能听懂的"通用语言",并且让普通用户在使用时也能直接操作,是第二道难关。

第三个难题是"时间越长,世界越乱"。AI每生成一帧画面,都会把这帧作为下一帧的参考依据。问题在于,AI生成的画面不可能百分之百完美,总会有细微的偏差。这些细小偏差一帧一帧积累下去,就像传话游戏一样,经过足够多的"传递"之后,原本的场景可能面目全非——人物消失了,天空变成奇怪的颜色,或者画面彻底卡死成一张静图。这就是研究者所说的"自回归漂移"问题,也是长时间互动世界最核心的挑战。

第四个难题是速度和内存。用于生成高质量视频的AI模型通常体积庞大、计算缓慢,往往需要专业级的服务器集群才能运行,普通桌面显卡根本装不下,更别提实时响应了。如何把一个巨型AI模型塞进一块消费级显卡,同时还能达到实时交互所需的速度,是工程层面的第四道难关。

ABot-World-0这篇论文,正是针对以上四个难题,分别给出了系统性解答。

**三、数据工厂:如何用三类原料炒出一桌好菜**

ABot-World-0的"食材"来自三个截然不同的来源,而研究团队把这三种原料统统送进了同一套加工流水线,最终制成统一格式的训练数据。

第一类原料是AAA游戏数据。研究团队接入了多款顶级商业游戏的底层API(可以理解为游戏的"后台控制接口"),实时读取玩家每一帧按下了哪些键、摄像机在空间中的精确位置和角度。这类数据的优势是"标注零误差"——键位记录来自游戏本身,绝对准确。录制的视频分辨率为1920×1080,涵盖第一人称视角(你看到的就是角色眼前的画面)和第三人称视角(你看着角色在场景中移动)。游戏数据构成了整个训练集中最大、最重要的部分。

第二类原料是仿真引擎数据。研究团队使用了Unreal Engine(一款专业3D渲染引擎)和一套叫ABot-3DGS的自研技术。后者能把真实世界的街道扫描照片重建成可以在虚拟世界里自由漫游的3D场景。这类数据的特点是"物理精确"——你可以精确控制光线方向、天气变化、时间段,所有操作标注也是程序自动生成的,不会出错。研究团队还模拟了人类真实的漫游习惯,比如来回扫视、手持抖动等,让AI也能学到自然的运镜感觉。

第三类原料是互联网视频。这类视频画面最真实、最多样,但有一个致命缺陷:没有键位记录。研究团队的解决方案是"反推"——通过分析视频中摄像机的运动轨迹(比如往左移了多少、往上转了多少),推算出"如果这是游戏操作,对应的是哪个键"。这种推算不可能百分之百准确,但互联网视频带来的多样性——不同的光线、季节、室内外场景——弥补了游戏和仿真数据在真实感上的不足。

仅仅收集数据是不够的。研究团队还开发了一套叫做WorldExplorer的自动采集系统,这套系统会在游戏和仿真环境里24小时不间断地自主漫游,就像一个不知疲倦的探险家,不断探索新区域、避开已经走过的路。更关键的是,WorldExplorer还有一个"自我反省"的机制——它会监控当前训练模型在哪类场景下表现最差,然后主动把采集重心转向这些薄弱区域。比如,如果AI在雨天场景下生成质量明显下滑,WorldExplorer就会多采集雨天内容;如果AI对骑马视角的理解不够准确,系统就会增加骑马场景的采集比例。这种"哪里弱就补哪里"的动态调整机制,让数据采集从被动的"批量收割"变成了主动的"精准培育"。

收集完的原始数据还要经过严格的质量筛查。研究团队设计了三个递进的筛查阶段,共包含14项独立检测指标,涵盖六个维度。第一阶段检查"基础格式",比如文件是否完整、分辨率是否达标、有没有掉帧现象,格式级错误的视频直接丢弃。第二阶段检查"内容质量",通过视觉语言大模型(可以理解为一个能看懂图像并打分的AI审核员)自动识别并剔除带有游戏UI界面遮挡、加载动画、渲染故障或角色死亡动画的片段,同时验证键位标注是否与画面运动方向吻合。第三阶段不再做硬性丢弃,而是给每个视频片段打一个"软分数",记录它的画面稳定性、颜色一致性等指标,这个分数会在训练时影响该片段的权重——好素材多学一点,差素材少学一点。

筛查通过后,每个视频片段还要附上两类额外标注。一是文字描述,由大型视觉语言模型自动生成,描述视频里的场景、天气、时间等信息,但故意不描述摄像机的运动方式,目的是让AI学会把"场景是什么"和"摄像机怎么动"分开理解,避免混淆。二是场景语义标签,包括室内还是室外、城市还是野外、是否有人物角色等,这些标签用于训练时按类别均衡采样,确保AI不会因为数据偏多就"偏科"。

**四、统一控制语言:让键盘成为连接人与AI世界的桥梁**

在理解了数据来源之后,来看看ABot-World-0是怎么"听懂"人类操作的。

研究团队做出了一个看似简单却影响深远的设计决定:用原始键盘输入作为唯一的控制信号。具体来说,系统只识别8个键位,W/A/S/D控制角色或摄像机的移动方向,I/J/K/L控制摄像机的旋转方向。每一帧画面都对应一个8位的"操作向量",每一位代表对应按键是按下(1)还是松开(0)的状态。

这个设计之所以重要,在于它的"普适性"。无论是游戏里的角色行走、仿真场景里的摄像机飞行,还是互联网视频里估算出来的摄像机运动,所有的操作信息最终都被转换成这同一套8键格式。更直接的好处是:用户在使用时按什么键,就是什么控制信号,不需要任何转换,AI训练时用的语言和用户使用时说的语言完全一致。

不过,视频生成模型处理的是压缩后的"潜空间"帧(可以把它理解为视频被高度压缩后的数字摘要,通常每4帧原始视频对应1个压缩帧)。为了让键位信息和压缩帧对齐,研究团队把每4帧的键位信息拼接成一个32维的向量(8个键×4帧),然后通过一个专门设计的适配器模块,把这个向量转换成和视频压缩帧同等规格的"控制信号",以相加的方式直接注入视频生成模型的处理流程中。这个适配器使用了PixelUnshuffle(一种空间重采样操作)加上卷积层和残差块的组合,确保控制信号在空间尺度上与视频帧精确对齐。

对于第三人称视角下控制特定角色的场景,还存在一个特殊问题:长时间生成后,画面里的人物外貌可能逐渐变形——发色变了、服装细节消失了——即使动作还是正确的。为了解决这个"角色飘移"问题,研究团队引入了"参考角色记忆"机制。具体做法是:在生成开始前,预先准备几张目标角色的标准参考图(包含正面、背面、左侧、右侧四个方向的截图),将这些参考图通过与视频相同的压缩编码器转换成记忆令牌,然后把这些记忆令牌以固定的方式附在视频序列的前面。在时间位置编码上,记忆令牌被赋予负数序号,与代表实际画面的正数序号明确区分,告诉模型"这些是固定的外观参考,不是生成内容的一部分"。更重要的是,注意力机制被设置为单向:视频帧可以"参考"记忆令牌里的外貌信息,但记忆令牌不会反过来被视频内容修改。这样,角色的外貌特征就像一个永远开着的"对照表",随时提醒AI"这个角色本来应该长什么样"。

**五、从"全知"老师到"只看前方"学生:三阶段训练的完整故事**

ABot-World-0的训练过程分为两大阶段,第二阶段又进一步细分为三个递进步骤。整个过程可以用一个直觉性的比喻来理解:先培养一个能看全局的"全知监考官",再把监考官的知识转移给一个只能看自己面前卷子的"现场考生",最后让考生反复练习长卷子以避免后段崩盘。

**第一大阶段:训练双向老师**

"双向"意味着模型在生成某一帧画面时,可以同时参考这段视频中所有帧的信息,包括还没生成的"未来帧"。这种设计让模型能够学到极其连贯的动态规律——它知道这段路最终通向哪里,所以每一步都走得很稳。研究团队以Wan2.2这个预训练视频生成模型作为起点,在第一大阶段的训练中对所有参数进行全量微调,喂入大量带键位标注的视频数据,让模型学习"按什么键、画面怎么动"的对应关系。训练时还使用了长序列学习策略,让模型接触尽可能长的视频片段,打好长时生成的基础。

训练完成后,这个双向老师模型拥有极高的视觉质量和动作一致性,但有一个致命的部署缺陷:它需要"提前知道未来"——也就是说,它必须等整段视频的操作序列全部确定之后,才能开始生成画面。这在实时互动场景中是完全不可接受的:用户的下一个操作取决于他看到的画面,而画面又取决于他的下一步操作,双方都在等对方先动,死锁。

**第二大阶段第一步:老师强制教学(Teacher Forcing)**

为了解决这个问题,研究团队用双向老师初始化了一个新的"学生模型",然后开始改造它的"视野"。在这个步骤里,历史帧(已经生成的帧)以干净、完整的形式提供给学生,而待生成的目标帧则加入了随机噪声——学生的任务是在只看历史的条件下,把噪声还原成正确的画面。与此同时,一个"因果注意力遮罩"被引入:它像一块挡板,确保学生在处理第T帧时,无法偷看第T+1帧之后的任何内容。通过这种方式,学生学会了用"只看过去"来预测"当前",完成了从双向到单向的关键转变。

**第二大阶段第二步:压缩生成步骤(ODE Distillation)**

经过第一步改造的因果学生模型还有一个问题:每生成一段视频,它需要进行数十次迭代去噪(可以理解为从一张雪花纹图像出发,一步一步擦去噪声,最终得到清晰画面)。迭代次数越多,质量越好,但时间也越长,无法满足实时交互的速度要求。

ODE蒸馏的目标就是把这几十步压缩成寥寥几步,同时尽量保持质量。具体做法是:冻结第一步训练好的因果学生模型作为"参照系",然后训练一个新的少步模型,让它在给定同样的历史帧和操作序列的条件下,直接预测出完整的目标结果,跳过中间的大量迭代步骤。这个训练目标由一个明确的数学损失函数驱动(原文公式11),确保少步模型的输出尽量逼近多步参照系的最终结果,同时整个过程中始终维持因果约束,不允许"偷看未来"。

**第二大阶段第三步:长视野匹配(LongForcing)**

ODE蒸馏完成后,模型已经能以很少的步骤生成每一帧,速度问题基本解决了。但新的问题浮出水面:在短段视频上训练时,历史帧都是真实的干净帧;而实际使用时,历史帧全是AI自己生成的帧,这两者之间存在细微但持续积累的差异。经过几十帧、几百帧的积累,这个差异会越来越大,最终导致生成质量下滑。

研究团队把这个问题理解为"分布漂移"——模型训练时看到的历史分布(真实帧)和推理时实际遇到的历史分布(自己生成的帧)不一样,训练时覆盖到的"长时间自生成历史"的情境太少,模型对这类情境的处理能力不足。

LongForcing的核心思路是:让学生模型先自己连续生成一段较长的视频,然后把这段自生成的历史和对应的操作序列一起喂给双向老师,让老师也生成对应的视频,最后通过分布匹配训练(Distribution Matching Distillation,DMD)拉近学生长时生成的分布和老师的分布。这种方式的关键在于"覆盖长时自生成情境"——学生在训练时真正面对的是长段自己生成的历史,而不是全程完美的真实帧历史。老师在更长的时间维度上对学生的输出分布进行纠正,帮助学生在后段生成时不至于越走越偏。

研究团队通过实验直接验证了LongForcing的效果。他们把LongForcing与一种叫Causal Forcing的基线方法进行了60秒滚动生成的对比测试,追踪了四个质量指标:HPSv3美学评分(越高越好)、高饱和像素比例(越低越好,高饱和是画面"过曝"或出现色块异常的信号)、感知模糊分数(越低越好)、图块重复率(越低越好,高重复率意味着画面陷入重复纹理的僵局)。结果显示,在生成的前半段两种方法相差不大,但在后半段Causal Forcing的HPSv3开始稳步下滑,而另外三个劣化指标则明显上升——这正是"越走越乱"的漂移现象。LongForcing在同样的60秒后段保持了更稳定的美学评分和更低的劣化指标,说明它确实有效地延缓了长时生成的质量衰退。

**六、让AI世界在桌面显卡上飞起来:系统工程的五个关键优化**

即便完成了所有的训练改造,一个5B参数的DiT(扩散变换器)模型在普通显卡上运行仍然面临两个硬约束:显卡内存不够大,以及每帧生成速度不够快。研究团队为此进行了五个层面的系统级优化,每一个都针对特定的瓶颈。

第一个优化是轻量VAE解码器(LightVAE)。视频生成模型实际上工作在"潜空间"里——它生成的是高度压缩的数字摘要,需要通过一个解码器(VAE)才能还原成肉眼可见的像素画面。原版VAE解码器体积较大,解码一段视频耗时可观。研究团队参考了TAEHV的思路,对解码器架构进行了大幅简化和裁剪,构建了一条轻量化解码路径,在显著降低解码时间的同时,也减少了相当一部分显存占用。实验数据显示,仅凭这一个改动,就把原本因内存不足(OOM)的无法运行局面变成了可运行状态,帧率达到每秒9.1帧,显存占用20.5GB。

第二个优化是低精度量化推理。研究团队把DiT模型的线性层从FP16(16位浮点数)降低到FP8(8位浮点数),而对数值敏感的VAE和文本编码器则保持较高精度。这就像把食谱从精确到0.01克改成精确到0.1克——在大部分情况下,烤出来的蛋糕一样好吃,但秤的负担减少了一半。FP8使DiT的单次生成时间从1191毫秒降至845毫秒,帧率从9.1提升至12.4帧每秒,显存峰值从20.5GB降至15.9GB。研究团队还评估了更激进的MXFP6和MXFP4格式,它们进一步把帧率分别推高至14.1和15.8帧每秒,显存控制在17-18GB左右。

第三个优化是Fast-RoPE(快速旋转位置编码)。在AI模型里,每个词或每帧画面都需要带着"我是第几个"的位置标签,旋转位置编码(RoPE)就是生成这些标签的机制。在长时间连续生成过程中,RoPE会在不断滑动的局部窗口上反复计算,这个计算累积起来并不小。研究团队通过在局部注意力窗口内重新锚定时间位置编码(每次只在局部窗口内从1开始编号,而不是从视频开头累积编号),减少了大量重复计算。同时配合一个基于Triton(GPU加速编程框架)的专用RoPE计算核,进一步加速了旋转操作本身。加上Fast-RoPE后,DiT时间从845毫秒降至787毫秒,帧率提升至13.3帧每秒。

第四个优化是高效注意力计算(SageAttention2)。注意力机制是Transformer模型里最耗算力的操作之一——它要计算序列中每对位置之间的关联程度,运算量随序列长度平方增长。SageAttention2是一个为GPU高度优化的注意力计算后端,通过对数值异常值进行平滑处理以及使用每线程INT4量化,大幅降低了注意力的计算开销,且无需改动模型架构或重新训练。

第五个优化是内存感知调度和有界KV缓存。在长时间互动生成中,如果把整个生成历史的键值缓存(KV Cache)都留在显存里,随着时间推移内存会无限增长,最终溢出。研究团队采用了滚动淘汰策略,只保留最近一段历史的KV缓存,旧的自动丢弃,让内存占用与生成时长无关。此外,整个推理管线的各个模块(文本编码器、VAE编码器、DiT主体、VAE解码器)按照执行顺序动态地调入调出显存,而不是全程同时驻留,这种分时调度的方式参考了FramePack的思路,进一步降低了峰值显存需求。研究团队还探索了对KV缓存本身进行量化压缩的方法,压缩后的缓存在用于注意力计算时仍保持有效性,能进一步降低缓存的显存占用和内存带宽压力。

把以上所有优化叠加之后,最终的系统在RTX 5090上实现了最高16帧每秒的生成速度,从用户按键到第一帧响应的延迟为1.2秒,峰值显存不超过19.3GB。论文的实验数据明确表明,这些收益是"全栈协同"的结果——仅仅加快注意力计算或仅仅降低精度,都无法单独解决内存或速度的瓶颈,只有把五个优化同时应用,才能打通从模型到现实的最后通路。

**七、它能在真实测试中表现如何?**

研究团队在WorldRoamBench这个专门为互动世界模型设计的开放评测基准上,对ABot-World-0进行了定量评测,对手包括Google DeepMind的Genie 3、HappyOyster、LingBot-World(14B参数)以及HY-World 1.5(8.3B参数)。WorldRoamBench从四个维度打分:动作可控性(你按什么键、画面是否按预期移动)、视觉合理性(画面本身是否好看、是否真实)、物理一致性(物体的运动和碰撞是否符合现实规律)、时间记忆(场景和角色的外观能否在长时间内保持一致)。

ABot-World-0以5B参数的规模,在严格动作准确率(0.5266)和动作轨迹评分(0.6752)两项指标上排名第二,仅次于参数量更大的HappyOyster(0.5317和0.7737),在视觉美学和物理机制评分上也处于竞争性水平。考虑到ABot-World-0是所有参评模型中参数量最小的之一(5B vs 8.3B和14B),这个结果表明其效率相当突出。

除了数字评分,研究团队还进行了几组定性测试,直接观察模型在极端条件下的表现。

在小时级连续生成测试中,五段独立的交互视频各持续了60分钟。从时间戳截图来看,在0分钟、6分钟、12分钟……54分钟的间隔帧里,场景结构、角色外貌和运动连贯性都保持了辨认度,没有出现彻底崩塌的情况。

在日级连续生成测试中,研究团队更进一步,让四段视频各持续了24小时。在0小时、1小时……24小时的间隔帧里,可辨认的场景结构和活跃的运动状态依然存在,没有陷入静止、重复纹理或视觉噪声的困境。这是LongForcing和记忆机制共同作用下的结果,远超普通自回归模型在几分钟后就开始明显退化的惯常表现。

在跨域泛化测试中,研究团队刻意选取了训练数据中从未出现过的场景和角色组合:工业仓库里背着背包的男人、城市湿润街道中身穿皮夹克的角色、雪地神殿里手持长枪的红衣武士、绿草地上白裙金发的二次元少女、阳光购物街上的普通男性路人。在这些完全陌生的组合下,ABot-World-0依然能正确响应键位控制,生成的角色运动方向和幅度与指令吻合,周围场景保持连贯,说明学到的控制知识具有一定的泛化能力。

在物理效果测试中,研究团队记录了几个让人印象深刻的涌现行为。一名男性角色推开一个纸箱,纸箱确实被推开了;角色走过水面,水面留下了在时序上连贯的涟漪痕迹;角色在雪地中行走,留下了持续可见的脚印;第一人称视角下走向墙壁,前进动作被墙壁阻拦而无法穿过;一个角色碰到护栏,没有穿模而是被挡住了。这些物理反应并非来自任何显式的物理引擎规则,而是模型从大量真实游戏视频中自主学习到的视觉规律。

说到底,ABot-World-0解决的不是某一个单点问题,而是"让AI实时交互世界真正可用"这个系统级挑战。它的数据框架打通了三类来源之间的壁垒,它的训练管线把"全知"的高质量模型转化成了"实时响应"的可部署模型,它的LongForcing机制让世界能走得更远而不崩塌,它的工程优化让这一切能在一块普通桌面显卡上运行起来。

这项研究最有意思的地方,也许不仅仅是它实现了什么,而是它揭示了一个实用智慧:速度快不等于系统好,任何单一的优化技巧——无论是更少的去噪步骤、更低的数值精度还是更快的注意力算子——都无法独立解决问题。只有把每个环节都细致打磨,把所有的优化组合成一个协调工作的整体,AI生成的"无限世界"才真正能住人。

未来会走向哪里?研究团队在论文中指出了几个方向:更丰富的控制方式(不只是8个键,可能包含更复杂的语义指令或连续的摄像机轨迹)、多尺度的LongForcing(在更多的时间粒度上进行分布对齐)、更持久的场景记忆(让AI记住走过的地方,而不只是盯着最近的窗口),以及更高效的解码方案,让实时720P世界延伸到更普通的消费级硬件上。

如果你对这项研究的完整技术细节感兴趣,可以通过arXiv:2607.19191检索原始论文,阿里巴巴AMAP CV Lab也在GitHub上开放了项目代码,地址为github.com/amapcvlab/ABot-World。

Q&A

Q1:ABot-World-0生成的视频能真正持续多久而不崩坏?

A:在研究团队的测试中,ABot-World-0实现了24小时连续不间断的交互生成,在间隔采样的截图中场景结构和角色外貌仍保持可辨认状态,没有出现画面静止或视觉崩塌。这主要得益于LongForcing训练机制,它通过让模型接触自己生成的长序列历史来对抗错误累积,但在极端时间尺度下视觉质量会有一定程度的自然退化。

Q2:ABot-World-0运行需要什么硬件,普通玩家能用得起吗?

A:论文中的测试基于单张NVIDIA RTX 5090桌面显卡,峰值显存约19GB,在MXFP4低精度配置下可达每秒16帧720P输出。RTX 5090是2026年的消费级旗舰显卡,价格较高,但研究团队的优化目标正是消费级桌面GPU,与需要专业服务器集群的同类系统相比已有大幅进步。论文也提到未来希望进一步降低硬件门槛。

Q3:ABot-World-0是否可以控制任意角色或场景,还是只能用于特定游戏?

A:ABot-World-0使用统一的8键控制接口,在训练时融合了多款AAA游戏、仿真引擎场景和互联网视频数据,具备一定的跨场景泛化能力。研究团队专门测试了训练数据中从未出现的场景和角色组合,模型在这些陌生组合中仍能正确响应控制并保持场景连贯。不过,越远离训练分布的场景,生成质量会相应下降,对完全陌生的视觉风格支持仍有上限。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-