Merge viewer-eep
commit
4d2dd72d82
|
|
@ -573,12 +573,12 @@ LLViewerObject* LLControlAvatar::lineSegmentIntersectRiggedAttachments(const LLV
|
|||
return NULL;
|
||||
}
|
||||
|
||||
LLViewerObject* hit = NULL;
|
||||
LLViewerObject* hit = NULL;
|
||||
|
||||
if (lineSegmentBoundingBox(start, end))
|
||||
{
|
||||
LLVector4a local_end = end;
|
||||
LLVector4a local_intersection;
|
||||
if (lineSegmentBoundingBox(start, end))
|
||||
{
|
||||
LLVector4a local_end = end;
|
||||
LLVector4a local_intersection;
|
||||
if (mRootVolp->lineSegmentIntersect(start, local_end, face, pick_transparent, pick_rigged, face_hit, &local_intersection, tex_coord, normal, tangent))
|
||||
{
|
||||
local_end = local_intersection;
|
||||
|
|
@ -597,20 +597,20 @@ LLViewerObject* LLControlAvatar::lineSegmentIntersectRiggedAttachments(const LLV
|
|||
{
|
||||
LLVOVolume *volp = *vol_it;
|
||||
if (mRootVolp != volp && volp->lineSegmentIntersect(start, local_end, face, pick_transparent, pick_rigged, face_hit, &local_intersection, tex_coord, normal, tangent))
|
||||
{
|
||||
local_end = local_intersection;
|
||||
if (intersection)
|
||||
{
|
||||
*intersection = local_intersection;
|
||||
}
|
||||
{
|
||||
local_end = local_intersection;
|
||||
if (intersection)
|
||||
{
|
||||
*intersection = local_intersection;
|
||||
}
|
||||
hit = volp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return hit;
|
||||
}
|
||||
|
||||
return hit;
|
||||
}
|
||||
|
||||
// virtual
|
||||
|
|
|
|||
|
|
@ -1428,7 +1428,7 @@ LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSi
|
|||
return mCommitSignal.connect(cb);
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID &inventoryId)
|
||||
void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID &inventoryId, bool can_trans)
|
||||
{
|
||||
if (inventoryId.isNull())
|
||||
{
|
||||
|
|
@ -1471,7 +1471,7 @@ void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID &inventoryId)
|
|||
mCanSave = true;
|
||||
mCanCopy = mInventoryItem->getPermissions().allowCopyBy(gAgent.getID());
|
||||
mCanMod = mInventoryItem->getPermissions().allowModifyBy(gAgent.getID());
|
||||
mCanTrans = mInventoryItem->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
mCanTrans = can_trans && mInventoryItem->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
|
||||
mExpectingAssetId = mInventoryItem->getAssetUUID();
|
||||
LLSettingsVOBase::getSettingsAsset(mInventoryItem->getAssetUUID(),
|
||||
|
|
@ -1799,7 +1799,7 @@ void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID invent
|
|||
|
||||
void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID inventory_id)
|
||||
{
|
||||
|
||||
bool can_trans = true;
|
||||
if (mInventoryItem)
|
||||
{
|
||||
LLPermissions perms = mInventoryItem->getPermissions();
|
||||
|
|
@ -1808,6 +1808,7 @@ void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID invent
|
|||
|
||||
if (created_item)
|
||||
{
|
||||
can_trans = perms.allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
created_item->setPermissions(perms);
|
||||
created_item->updateServer(false);
|
||||
}
|
||||
|
|
@ -1815,7 +1816,7 @@ void LLFloaterEditExtDayCycle::onInventoryCreated(LLUUID asset_id, LLUUID invent
|
|||
|
||||
clearDirtyFlag();
|
||||
setFocus(TRUE); // Call back the focus...
|
||||
loadInventoryItem(inventory_id);
|
||||
loadInventoryItem(inventory_id, can_trans);
|
||||
}
|
||||
|
||||
void LLFloaterEditExtDayCycle::onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results)
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ private:
|
|||
void removeCurrentSliderFrame();
|
||||
void removeSliderFrame(F32 frame);
|
||||
|
||||
void loadInventoryItem(const LLUUID &inventoryId);
|
||||
void loadInventoryItem(const LLUUID &inventoryId, bool can_trans = true);
|
||||
void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status);
|
||||
|
||||
void doImportFromDisk();
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ LLFloaterSettingsPicker * LLFloaterFixedEnvironment::getSettingsPicker()
|
|||
return picker;
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
|
||||
void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId, bool can_trans)
|
||||
{
|
||||
if (inventoryId.isNull())
|
||||
{
|
||||
|
|
@ -290,7 +290,7 @@ void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId)
|
|||
|
||||
mCanCopy = mInventoryItem->getPermissions().allowCopyBy(gAgent.getID());
|
||||
mCanMod = mInventoryItem->getPermissions().allowModifyBy(gAgent.getID());
|
||||
mCanTrans = mInventoryItem->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
mCanTrans = can_trans && mInventoryItem->getPermissions().allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
|
||||
LLSettingsVOBase::getSettingsAsset(mInventoryItem->getAssetUUID(),
|
||||
[this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); });
|
||||
|
|
@ -653,6 +653,7 @@ void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inven
|
|||
|
||||
void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inventory_id)
|
||||
{
|
||||
bool can_trans = true;
|
||||
if (mInventoryItem)
|
||||
{
|
||||
LLPermissions perms = mInventoryItem->getPermissions();
|
||||
|
|
@ -661,13 +662,14 @@ void LLFloaterFixedEnvironment::onInventoryCreated(LLUUID asset_id, LLUUID inven
|
|||
|
||||
if (created_item)
|
||||
{
|
||||
can_trans = perms.allowOperationBy(PERM_TRANSFER, gAgent.getID());
|
||||
created_item->setPermissions(perms);
|
||||
created_item->updateServer(false);
|
||||
}
|
||||
}
|
||||
clearDirtyFlag();
|
||||
setFocus(TRUE); // Call back the focus...
|
||||
loadInventoryItem(inventory_id);
|
||||
loadInventoryItem(inventory_id, can_trans);
|
||||
}
|
||||
|
||||
void LLFloaterFixedEnvironment::onInventoryUpdated(LLUUID asset_id, LLUUID inventory_id, LLSD results)
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ protected:
|
|||
|
||||
LLFloaterSettingsPicker *getSettingsPicker();
|
||||
|
||||
void loadInventoryItem(const LLUUID &inventoryId);
|
||||
void loadInventoryItem(const LLUUID &inventoryId, bool can_trans = true);
|
||||
|
||||
void checkAndConfirmSettingsLoss(on_confirm_fn cb);
|
||||
|
||||
|
|
|
|||
|
|
@ -3561,6 +3561,7 @@ BOOL LLPanelLandEnvironment::postBuild()
|
|||
|
||||
getChild<LLUICtrl>(BTN_USEDEFAULT)->setLabelArg("[USEDEFAULT]", getString(STR_LABEL_USEREGION));
|
||||
getChild<LLUICtrl>(CHK_ALLOWOVERRIDE)->setVisible(FALSE);
|
||||
getChild<LLUICtrl>(PNL_REGION_MSG)->setVisible(FALSE);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(TRUE);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -207,8 +207,6 @@ public:
|
|||
|
||||
virtual S32 getParcelId() override { return INVALID_PARCEL_ID; }
|
||||
|
||||
static void updateEstateName(const std::string& name);
|
||||
|
||||
protected:
|
||||
static const U32 DIRTY_FLAG_OVERRIDE;
|
||||
|
||||
|
|
@ -657,13 +655,6 @@ LLPanelRegionExperiences* LLFloaterRegionInfo::getPanelExperiences()
|
|||
return (LLPanelRegionExperiences*)tab->getChild<LLPanel>("Experiences");
|
||||
}
|
||||
|
||||
void LLFloaterRegionInfo::updateEstateName(const std::string& estate_name)
|
||||
{
|
||||
LLPanelEstateCovenant::updateEstateName(estate_name);
|
||||
LLPanelEstateInfo::updateEstateName(estate_name);
|
||||
LLPanelRegionEnvironment::updateEstateName(estate_name);
|
||||
}
|
||||
|
||||
void LLFloaterRegionInfo::disableTabCtrls()
|
||||
{
|
||||
LLTabContainer* tab = getChild<LLTabContainer>("region_panels");
|
||||
|
|
@ -4012,6 +4003,11 @@ bool LLPanelRegionEnvironment::refreshFromRegion(LLViewerRegion* region)
|
|||
setNoSelection(true);
|
||||
setControlsEnabled(false);
|
||||
mCurEnvVersion = INVALID_PARCEL_ENVIRONMENT_VERSION;
|
||||
getChild<LLUICtrl>("region_text")->setValue(LLSD(""));
|
||||
}
|
||||
else
|
||||
{
|
||||
getChild<LLUICtrl>("region_text")->setValue(LLSD(region->getName()));
|
||||
}
|
||||
setNoSelection(false);
|
||||
|
||||
|
|
@ -4071,15 +4067,6 @@ bool LLPanelRegionEnvironment::confirmUpdateEstateEnvironment(const LLSD& notifi
|
|||
return false;
|
||||
}
|
||||
|
||||
void LLPanelRegionEnvironment::updateEstateName(const std::string& name)
|
||||
{
|
||||
LLPanelRegionEnvironment* panelp = LLFloaterRegionInfo::getPanelEnvironment();
|
||||
if (panelp)
|
||||
{
|
||||
panelp->getChildRef<LLTextBox>("estate_name").setText(name);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelRegionEnvironment::onChkAllowOverride(bool value)
|
||||
{
|
||||
setDirtyFlag(DIRTY_FLAG_OVERRIDE);
|
||||
|
|
|
|||
|
|
@ -113,8 +113,6 @@ public:
|
|||
void enableTopButtons();
|
||||
void disableTopButtons();
|
||||
|
||||
static void updateEstateName(const std::string& estate_name);
|
||||
|
||||
private:
|
||||
|
||||
LLFloaterRegionInfo(const LLSD& seed);
|
||||
|
|
|
|||
|
|
@ -2769,7 +2769,7 @@ void LLMeshUploadThread::requestWholeModelFee()
|
|||
{
|
||||
ms_sleep(sleep_time);
|
||||
sleep_time = llmin(250U, sleep_time + sleep_time);
|
||||
mHttpRequest->update(0);
|
||||
mHttpRequest->update(0);
|
||||
}
|
||||
if (isDiscarded())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@ const std::string LLPanelEnvironmentInfo::PNL_ENVIRONMENT_ALTITUDES("pnl_environ
|
|||
const std::string LLPanelEnvironmentInfo::PNL_BUTTONS("pnl_environment_buttons");
|
||||
const std::string LLPanelEnvironmentInfo::PNL_DISABLED("pnl_environment_disabled");
|
||||
const std::string LLPanelEnvironmentInfo::TXT_DISABLED("txt_environment_disabled");
|
||||
const std::string LLPanelEnvironmentInfo::PNL_REGION_MSG("pnl_environment_region_msg");
|
||||
const std::string LLPanelEnvironmentInfo::SDT_DROP_TARGET("sdt_drop_target");
|
||||
|
||||
const std::string LLPanelEnvironmentInfo::STR_LABEL_USEDEFAULT("str_label_use_default");
|
||||
|
|
@ -483,7 +484,7 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)
|
|||
getChild<LLUICtrl>(PNL_BUTTONS)->setVisible(false);
|
||||
getChild<LLUICtrl>(PNL_DISABLED)->setVisible(true);
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(false);
|
||||
|
||||
getChild<LLUICtrl>(PNL_REGION_MSG)->setVisible(false);
|
||||
updateEditFloater(mCurrentEnvironment, false);
|
||||
|
||||
return false;
|
||||
|
|
@ -491,6 +492,7 @@ bool LLPanelEnvironmentInfo::setControlsEnabled(bool enabled)
|
|||
getChild<LLUICtrl>(PNL_SETTINGS)->setVisible(true);
|
||||
getChild<LLUICtrl>(PNL_BUTTONS)->setVisible(true);
|
||||
getChild<LLUICtrl>(PNL_DISABLED)->setVisible(false);
|
||||
getChild<LLUICtrl>(PNL_REGION_MSG)->setVisible(isRegion());
|
||||
|
||||
getChild<LLUICtrl>(PNL_ENVIRONMENT_ALTITUDES)->setVisible(LLEnvironment::instance().isExtendedEnvironmentEnabled());
|
||||
getChild<LLUICtrl>(BTN_RST_ALTITUDES)->setVisible(isRegion());
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ protected:
|
|||
static const std::string PNL_ENVIRONMENT_ALTITUDES;
|
||||
static const std::string PNL_BUTTONS;
|
||||
static const std::string PNL_DISABLED;
|
||||
static const std::string PNL_REGION_MSG;
|
||||
static const std::string TXT_DISABLED;
|
||||
static const std::string SDT_DROP_TARGET;
|
||||
|
||||
|
|
|
|||
|
|
@ -85,6 +85,8 @@
|
|||
|
||||
#include "llenvironment.h"
|
||||
|
||||
#include "llenvironment.h"
|
||||
|
||||
extern LLPointer<LLViewerTexture> gStartTexture;
|
||||
extern bool gShiftFrame;
|
||||
|
||||
|
|
@ -681,7 +683,6 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
|||
if (gDisconnected)
|
||||
{
|
||||
LLAppViewer::instance()->pingMainloopTimeout("Display:Disconnected");
|
||||
LL_RECORD_BLOCK_TIME(FTM_RENDER_UI);
|
||||
render_ui();
|
||||
swap();
|
||||
}
|
||||
|
|
@ -1019,7 +1020,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
|
|||
// gGL.popMatrix();
|
||||
//}
|
||||
|
||||
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater();
|
||||
LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE;
|
||||
|
||||
// <FS:CR> Aurora Sim
|
||||
if (!LLWorld::getInstance()->getAllowRenderWater())
|
||||
|
|
@ -1434,7 +1435,7 @@ void render_ui(F32 zoom_factor, int subfield)
|
|||
{
|
||||
gPipeline.renderBloom(gSnapshot, zoom_factor, subfield);
|
||||
}
|
||||
|
||||
|
||||
LL_RECORD_BLOCK_TIME(FTM_RENDER_HUD);
|
||||
render_hud_elements();
|
||||
// [RLVa:KB] - Checked: RLVa-2.2 (@setoverlay)
|
||||
|
|
|
|||
|
|
@ -8332,8 +8332,9 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
|
|||
msg->getString("Data", "EstateName", estate_name);
|
||||
msg->getUUID("Data", "EstateOwnerID", estate_owner_id);
|
||||
|
||||
LLPanelEstateCovenant::updateEstateName(estate_name);
|
||||
LLPanelLandCovenant::updateEstateName(estate_name);
|
||||
LLFloaterRegionInfo::updateEstateName(estate_name);
|
||||
LLPanelEstateInfo::updateEstateName(estate_name);
|
||||
LLFloaterBuyLand::updateEstateName(estate_name);
|
||||
|
||||
std::string owner_name =
|
||||
|
|
|
|||
|
|
@ -5923,7 +5923,6 @@ BOOL LLViewerWindow::rawSnapshot(LLImageRaw *raw, S32 image_width, S32 image_hei
|
|||
{
|
||||
// Required for showing the GUI in snapshots and performing bloom composite overlay
|
||||
// Call even if show_ui is FALSE
|
||||
LL_RECORD_BLOCK_TIME(FTM_RENDER_UI);
|
||||
render_ui(scale_factor, subfield);
|
||||
swap();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1345,10 +1345,10 @@ void LLWorld::precullWaterObjects(LLCamera& camera, LLCullResult* cull, bool inc
|
|||
|
||||
if (include_void_water)
|
||||
{
|
||||
for (std::list<LLVOWater*>::iterator iter = mHoleWaterObjects.begin();
|
||||
iter != mHoleWaterObjects.end(); ++ iter)
|
||||
{
|
||||
LLVOWater* waterp = *iter;
|
||||
for (std::list<LLPointer<LLVOWater> >::iterator iter = mHoleWaterObjects.begin();
|
||||
iter != mHoleWaterObjects.end(); ++ iter)
|
||||
{
|
||||
LLVOWater* waterp = (*iter).get();
|
||||
if (waterp && waterp->mDrawable)
|
||||
{
|
||||
waterp->mDrawable->setVisible(camera);
|
||||
|
|
|
|||
|
|
@ -19,53 +19,42 @@
|
|||
<string name="str_too_small">The parcel must be at least 128 square meters to support an environment.</string>
|
||||
<string name="str_empty">(empty)</string>
|
||||
<string name="str_region_env">(region environment)</string>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="32"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="env_help_text"
|
||||
top="14"
|
||||
word_wrap="true">
|
||||
Changes to settings on this tab will affect all regions in the estate.
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
right="160"
|
||||
name="estate_text"
|
||||
top_pad="2"
|
||||
halign="right"
|
||||
width="140">
|
||||
Estate:
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
font="SansSerif"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
top_delta="0"
|
||||
name="estate_name"
|
||||
left_pad="6"
|
||||
width="150">
|
||||
(unknown)
|
||||
</text>
|
||||
|
||||
<layout_stack
|
||||
width="530"
|
||||
height="400"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
left="0"
|
||||
animate="false"
|
||||
orientation="vertical">
|
||||
<layout_panel
|
||||
user_resize="false"
|
||||
auto_resize="false"
|
||||
height="20"
|
||||
name="pnl_environment_region_msg"
|
||||
top="0">
|
||||
<text follows="left|top"
|
||||
font="SansSerif"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="region_text_lbl"
|
||||
top="6"
|
||||
width="100">
|
||||
Region:
|
||||
</text>
|
||||
<text follows="left|top"
|
||||
font="SansSerif"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="50"
|
||||
name="region_text"
|
||||
top_delta="0"
|
||||
width="400">
|
||||
unknown
|
||||
</text>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
user_resize="false"
|
||||
name="pnl_environment_disabled"
|
||||
|
|
@ -82,6 +71,7 @@
|
|||
<layout_panel
|
||||
user_resize="false"
|
||||
min_height="0"
|
||||
top="0"
|
||||
name="pnl_environment_config"
|
||||
visible="true">
|
||||
<layout_stack
|
||||
|
|
|
|||
|
|
@ -484,5 +484,6 @@ musique :
|
|||
</panel>
|
||||
</panel>
|
||||
<panel label="EXPÉRIENCES" name="land_experiences_panel"/>
|
||||
<panel label="ENVIRONNEMENT" name="land_environment_panel"/>
|
||||
</tab_container>
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="perms default" title="СТАНДАРТНЫЕ РАЗРЕШЕНИЯ НА СОЗДАНИЕ">
|
||||
<panel label="Стандартные разрешения" name="default permissions">
|
||||
<text name="label_1">
|
||||
Следующий владелец:
|
||||
</text>
|
||||
<text name="label_2">
|
||||
Копировать
|
||||
</text>
|
||||
<text name="label_3">
|
||||
Изменять
|
||||
</text>
|
||||
<text name="label_4">
|
||||
Передать
|
||||
</text>
|
||||
<text name="label_5">
|
||||
Поделиться с группой
|
||||
</text>
|
||||
<text name="label_6">
|
||||
Разрешить всем копировать
|
||||
</text>
|
||||
<text name="label_7" tool_tip="Задайте стандартные разрешения для создания объектов">
|
||||
Объекты
|
||||
</text>
|
||||
<text name="label_8" tool_tip="Задайте стандартные разрешения для передаваемых вещей">
|
||||
Переданное
|
||||
</text>
|
||||
<text name="label_9" tool_tip="Задайте стандартные разрешения для создания скриптов">
|
||||
Скрипты
|
||||
</text>
|
||||
<text name="label_10" tool_tip="Задайте стандартные разрешения для создания заметок">
|
||||
Заметки
|
||||
</text>
|
||||
<text name="label_11" tool_tip="Задайте стандартные разрешения для создания жестов">
|
||||
Жесты
|
||||
</text>
|
||||
<text name="label_12" tool_tip="Задайте стандартные разрешения для создания одежды или частей тела">
|
||||
Носимые вещи
|
||||
</text>
|
||||
<text name="label_13" tool_tip="Задать стандартные разрешения, когда будут созданы настройки среды">
|
||||
Настройки
|
||||
</text>
|
||||
<check_box name="env_settings_c" value="true"/>
|
||||
</panel>
|
||||
<button label="OK" label_selected="OK" name="ok"/>
|
||||
<button label="Отмена" label_selected="Отмена" name="cancel"/>
|
||||
</floater>
|
||||
Loading…
Reference in New Issue