	public Dpi(uint x, uint y)
			: this()
		{
			this.X = x;
			this.Y = y;
		}

		public static bool operator ==(Dpi dpi1, Dpi dpi2)
		{
			return dpi1.X == dpi2.X && dpi1.Y == dpi2.Y;
		}

		public static bool operator !=(Dpi dpi1, Dpi dpi2)
		{
			return !(dpi1 == dpi2);
		}

		public bool Equals(Dpi other)
		{
			return this.X == other.X && this.Y == other.Y;
		}

		public override bool Equals(object obj)
		{
			if (ReferenceEquals(null, obj)) return false;
			return obj is Dpi && this.Equals((Dpi)obj);
		}

		public override int GetHashCode()
		{
			unchecked
			{
				return ((int)this.X * 397) ^ (int)this.Y;
			}
		}
	}
}


local defaults = {
  autostart = true, -- Automatically start the plugin on load?

  -- Function to determine if a session should be saved
  ---@type fun(): boolean
  should_save = function()
    return true
  end,

  save_dir = vim.fn.expand(vim.fn.stdpath("data") .. "/sessions/"), -- Directory where session files are saved

  follow_cwd = true, -- Change the session file to match any change in the cwd?
  use_git_branch = false, -- Include the git branch in the session file name?
  autoload = false, -- Automatically load the session for the cwd on Neovim startup?

  -- Function to run when `autoload = true` but there is no session to load
  ---@type fun(): any
  on_autoload_no_session = function() end,

  allowed_dirs = {}, -- Table of dirs that the plugin wil


cY1 + slopeZ111 * fracZ1 + offset111,
							smoothZ
						),
						smoothY
					),
					smoothX,
					Interpolator.mixLinear(
						Interpolator.mixLinear(slopeX000, slopeX001, smoothZ),
						Interpolator.mixLinear(slopeX010, slopeX011, smoothZ),
						smoothY
					),
					Interpolator.mixLinear(
						Interpolator.mixLinear(slopeX100, slopeX101, smoothZ),
						Interpolator.mixLinear(slopeX110, slopeX111, smoothZ),
						smoothY
					),
					dSmoothX
				) * rcpX
			);
			if (++index  >= sampleCount) break;
			if (++modY   >= scaleY) {
				modY      = 0;
				slopeX000 = slopeX010;
				slopeX001 = slopeX011;
				slopeX100 = slopeX110;
				slopeX101 = slopeX111;
				slopeY000 = slopeY010;
				slopeY001 = slopeY011;
				slopeY100 = slopeY110;
				slopeY101 = slopeY111;
				slopeZ000 = slopeZ010;
				slopeZ001 = slopeZ011;
				slopeZ100 = slopeZ110;
				slopeZ101 = slopeZ111;
				offset000 = offset010;
				offset001 = offset011;
				offset100 = offset110;
				offset101 = offset111;
				gridY    += scaleY;
				slopeX010 = this.slopeX(seed, gridX0, gridY, gridZ0);
				slopeX011 = this.slopeX(seed, gridX0, gridY, gridZ1);
				slopeX110 = this.slopeX(seed, gridX1, gridY, gridZ0);
				slopeX111 = this.slopeX(seed, gridX1, gridY, gridZ1);
				slopeY010 = this.slopeY(seed, gridX0, gridY, gridZ0);
				slopeY011 = this.slopeY(seed, gridX0, gridY, gridZ1);
				slopeY110 = this.slopeY(seed, gridX1, gridY, gridZ0);
				slopeY111 = this.slopeY(seed, gridX1, gridY, gridZ1);
				slopeZ010 = this.slopeZ(seed, gridX0, gridY, gridZ0);
				slopeZ011 = this.slopeZ(seed, gridX0, gridY, gridZ1);
				slopeZ110 = this.slopeZ(seed, gridX1, gridY, gridZ0);
				slopeZ111 = this.slopeZ(seed, gridX1, gridY, gridZ1);
				offset010 = this.offset(seed, gridX0, gridY, gridZ0);
				offset011 = this.offset(seed, gridX0, gridY, gridZ1);
				offset110 = this.offset(seed, gridX1, gridY, gridZ0);
				offset111 = this.offset(seed, gridX1, gridY, gridZ1);
			}
		}
	}

	@Override
	public void getBulkZ(long seed, int x, int y, int startZ, NumberArray samples) {
		int sampleCount = samples.length();
		if (sampleCount <= 0) return;
		seed = this.salt.xor(seed);
		int
			scaleX    = this.scaleX,
			scaleY    = this.scaleY,
			scaleZ    = this.scaleZ,
			modX      = BigGlobeMath.modulus_BP(x, scaleX),
			modY      = BigGlobeMath.modulus_BP(y, scaleY),
			modZ      = BigGlobeMath.modulus_BP(startZ, scaleZ),
			gridX0    = x - modX,
			gridY0    = y - modY,
			gridZ     = startZ - modZ,
			gridX1


.swagger-ui .opblock-tag {
	font-size: 1em;
	margin: 0 0 0.3125em;
	color: #3b4151;
}

.swagger-ui .opblock-tag > a {
	font-size: 1.5em;
}

.swagger-ui .opblock-tag.no-desc span {
	-webkit-box-flex: 1;
	-ms-flex: 1;
	flex: 1;
}

.swagger-ui .opblock-tag svg {
	-webkit-transition: all 0.4s;
	transition: all 0.4s;
}

.swagger-ui .opblock-tag small {
	font-size: 0.875em;
	font-weight: 400;
	padding: 0 0.625em;
	-webkit-box-flex: 1;
	-ms-flex: 1;
	flex: 1;
	color: #3b4151;
}

.swagger-ui .parаmeter__type {
	font-size: 0.75em;
	padding: 0.3125em 0;
	font-weight: 600;
	color: #3b4151;
}

.swagger-ui .view-line-link {
	position: relative;
	top: 0.1875em;
	width: 1.25em;
	margin: 0 0.3125em;
	cursor: pointer;
	-webkit-transition: all 0.5s;
	transition: all 0.5s;
}

.swagger-ui .opblock {
	margin: 0 0 0.9375em;
	border: 0.0625em solid #000;
	border-radius: var(--radius-small);
	box-shadow: 0 0 0.1875em rgba(0, 0, 0, 0.19);
}

.swagger-ui .opblock.is-open .opblock-summary {
	border-bottom: 0.0625em solid #000;
}

.swagger-ui .opblock .opblock-section-header {
	padding: 0.5em 1.25em;
	background: hsla(0, 0%, 100%, 0.8);
	box-shadow: 0 0.0625em 0.125em rgba(0, 0, 0, 0.1);
}

.swagger-ui .opblock .opblock-section-header,
.swagger-ui .opblock .opblock-section-header label {
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	-webkit-box-align: center;
	-ms-flex-align: center;
	align-items: center;
}

.swagger-ui .opblock .opblock-section-header label {
	font-size: 0.75em;
	font-weight: 700;
	margin: 0;
	color: #3b4151;
}

.swagger-ui .opblock .opblock-section-header label span {
	padding: 0 0.625em 0 0;
}

.swagger-ui .opblock .opblock-section-header h4 {
	font-size: 0.875em;
	margin: 0;
	-webkit-box-flex: 1;
	-ms-flex: 1;
	flex: 1;
	color: #3b4151;
}

.swagger-ui .opblock .opblock-summary-method {
	font-size: 1em;
	font-weight: 700;
	min-width: 5em;
	padding: 0.375em 0.9375em;
	text-align: center;
	border-radius: var(--radius-medium);
	background: #000;
	text-shadow: 0 0.0625em 0 rgba(0, 0, 0, 0.1);

	color: #fff;
}

.swagger-ui .opblock .opblock-summary-path,
.swagger-ui .opblock .opblock-summary-path__deprecated {
	font-size: 1em;
	display: -webkit-box;
	display: -ms-flexbox;
	display: flex;
	padding: 0 0.625em;

	font-weight: 600


="South Korea national football team"><img alt="South Korea" src="//upload.wikimedia.org/wikipedia/commons/thumb/7/76/Flag_of_South_Korea_%281997%E2%80%932011%29.svg/15px-Flag_of_South_Korea_%281997%E2%80%932011%29.svg.png" decoding="async" width="15" height="10" class="thumbborder" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/7/76/Flag_of_South_Korea_%281997%E2%80%932011%29.svg/23px-Flag_of_South_Korea_%281997%E2%80%932011%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/7/76/Flag_of_South_Korea_%281997%E2%80%932011%29.svg/30px-Flag_of_South_Korea_%281997%E2%80%932011%29.svg.png 2x" data-file-width="900" data-file-height="600" /> Yoo Sang-chul

Forwards

 Ronaldo

 Miroslav Klose

<img alt="Senegal" src="//upload.wikimedia.org/wikipedia/commons/thumb/f/fd/Flag_of_Senegal.svg/15px-Flag_of_Senegal.svg.png" decoding="async" width="15" height="10" class="thumbborder" srcset="//upload.wikimedia.org/wikipedia/commons


226,7 @@
 #endif  // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)

 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
-    BUILDFLAG(IS_CHROMEOS)
+    BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
 #include "chrome/browser/ui/tabs/tab_metrics_provider.h"
 #endif  // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) ||
         // BUILDFLAG(IS_CHROMEOS)
@@ -246,7 +246,7 @@ const int kMaxHistogramGatheringWaitDuration = 60000;
 // Needs to be kept in sync with the writer in
 // third_party/crashpad/crashpad/handler/handler_main.cc.
 const char kCrashpadHistogramAllocatorName[] = "CrashpadMetrics";
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
 ChromeMetricsServiceCrashReporter& GetCrashReporter() {
   static base::NoDestructor<ChromeMetricsServiceCrashReporter> crash_reporter;
   return *crash_reporter;
@@ -556,7 +556,7 @@ void ChromeMetricsServiceClient::RegisterPrefs(PrefReg
 #endif  // BUILDFLAG(IS_CHROMEOS)

 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || \
-    BUILDFLAG(IS_MAC)
+    BUILDFLAG(IS_MAC) || BUILDFLAG(IS_BSD)
   metrics::structured::StructuredMetricsService::RegisterPrefs(registry);

 #if !BUILDFLAG(IS_CHROMEOS)
@@ -638,7 +638,7 @@ std::string ChromeMetricsServiceClient::GetVersionStri
 void ChromeMetricsServiceClient::OnEnvironmentUpdate(std::string* environment) {
   // TODO(https://bugs.chromium.org/p/crashpad/issues/detail?id=135): call this
   // on Mac when the Crashpad API supports it.
-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)
   // Register the environment with the crash reporter. Note that there is a
   // window from startup to this point during which crash reports will not have
   // an environment set.
@@ -740,7 +740,7 @@ void ChromeMetricsServiceClient::Initialize() {
         std::make_unique<metrics::dwa::DwaService>(this, local_state);
   }
 #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \
-    BUILDFLAG(IS_CHROMEOS)
+    BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_BSD)
   metrics::structured::Recorder::GetInstance()->SetUiTaskRunner(
       base::SequencedTaskRunner::GetCurrentDefault());
 #endif
@@ -800,7 +800,7 @@ void ChromeMetricsServiceClient::RegisterMetricsServic
   metrics_service_->RegisterMetricsProvider(
       std::make_unique<metrics::CPUMetricsProvider>());

-#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
+#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_BSD)


    internal val finalSortingFunction by lazy {
        if (reverse) SortingFunction.Reverse(sortingFunction) else sortingFunction
    }

    override fun run() = runBlocking {
        val input = inputPath.immutableImage()
        val output = pattern.sortTimed(input)

        echo(message = "Saving image")
        val saveDuration = measureTime { output.save() }
        echo(message = "Saved in $saveDuration")
        echo(message = "Buy me a coffee @ $KO_FI")
    }

    private fun ImmutableImage.save(): File? {
        val filename = "$outputFilename.${outputFiletype.extension}"
        echo(message = "Filename: $filename")
        return output(outputFiletype.writer, inputPath.resolveSibling(relative = filename))
    }

    private fun mask(intervalFunction: IntervalFunction) = maskPath?.immutableImage()
        ?.let { if (pattern is Pattern.Lines) it.rotateAntiClockwise(angle ?: 0.0) else it }
        ?.let { IntervalFunction.Mask(intervalFunction, it) }
        ?: intervalFunction
}

fun main(args: Array<String>) = PixelSorter.main(args)

class PixelSequenceSorter(
    private val intervalFunction: IntervalFunction,
    private val sortingFunction: SortingFunction,
) {

    val colors = mutableListOf<RGBColor>()

    private var indexSortedTo = 0

    fun insert(pixel: Pixel) = also {
        val color = pixel.toColor()
        if (color.alpha != 0 && intervalFunction.shouldBeSorted(pixel)) {
            val index = colors.binarySearch(color, sortingFunction.comparator, indexSortedTo)
            colors.add(if (index < 0) (-(index + 1)) else index, color)
        } else {
            colors.add(color)
            indexSortedTo = colors.size
        }
    }
}

fun Int.squared() = (this * this).toDouble()

fun ImmutableImage.rotateAntiClockwise(degrees: Double): ImmutableImage {
    val size = sqrt(width.squared() + height.squared())
    val transform = AffineTransform().apply {
        translate((size - width) / 2, (size - height) / 2)
        rotate(toRadians(-degrees), width / 2.0, height / 2.0)
    }
    val target = ImmutableImage.filled(size.toInt(), size.toInt(), Colors.Transparent.awt()).awt()
    target.createGraphics().drawImage(awt(), transform, null)
    return ImmutableImage.wrapAwt(target, metadata)
}

fun ImmutableImage.rotateClockwise(degrees: Double): ImmutableImage {
    val transform = AffineTransform().apply {
        rotate(toRadians(degrees), width / 2.0, height / 2.0)
    }
    val target = BufferedImage(width, height, type)
    target.createGraphics().drawImage(awt(), transform, null)
    return ImmutableImage.wrapAwt(target, metadata)
}

internal fun File.immutableImage() = ImmutableImage.loader().fromFile(this)
import huffman.CompositeNode
import huffman.HuffmanCompressor
import huffman.LeafNode
import lz77.LZ77Literal
import lz77.LZ77Repeat
import lz77.LZ77Token
import org.testng.annotations.Test
import java.io.File

class HuffmanTest {

    private val path = "src/test/resources/"

    @Test
    fun encodeTest() {
        val input = byteArrayOf(0x1f, 0x8b.toByte(), 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff.toByte(), 0x71, 0x75, 0x69, 0x6e, 0x65, 0x2e,
            0x67, 0x7a, 0x00, 0x00, 0x18, 0x00, 0xe7.toByte(


7">data_sets.h

DYN_AIRBORNE_4G
: data_sets.h

DYN_AUTOMOTIVE
: data_sets.h

DYN_MARINE
: data_sets.h

DYN_PEDESTRIAN
: data_sets.h

DYN_PORTABLE
: data_sets.h

DYN_STATIONARY
: data_sets.h

DYN_WRIST
: data_sets.h

<address class="footer">
Generated by

 1.8.18
</address>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>SDK: src/serialPort.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>

<link href="search/search.css"


ChannelHandlerContext ctx) throws Exception {
        Channel visitorChannel = ctx.channel().attr(Constants.NEXT_CHANNEL).get();
        if (null != visitorChannel) {
            Integer licenseId = ctx.channel().attr(Constants.LICENSE_ID).get();
            String visitorId = ctx.channel().attr(Constants.VISITOR_ID).get();
            Channel cmdChannel = ProxyUtil.getCmdChannelByLicenseId(licenseId);

            if (null != cmdChannel) {
                ProxyUtil.removeVisitorChannelFromCmdChannel(cmdChannel, visitorId);
            }
            ProxyUtil.remoteProxyConnectAttachment(visitorId);

            // 此处如果时UDP的 visitorChannel，则不能close，先临时判断一下
            Boolean isUdp = visitorChannel.attr(Constants.IS_UDP_KEY).get();
            if (visitorChannel.isActive() && null == isUdp) {
                // 数据发送完成后再关闭连接，解决http1.0数据传输问题
                visitorChannel.writeAndFlush(Unpooled.EMPTY_BUFFER).addListener(ChannelFutureListener.CLOSE);
                visitorChannel.close();
            }
        } else {
            CmdChannelAttachInfo cmdChannelAttachInfo = ProxyUtil.getAttachInfo(ctx.channel());
            if (null != cmdChannelAttachInfo) {
                Channel curCmdChannel = ProxyUtil.getCmdChannelByLicenseId(cmdChannelAttachInfo.getLicenseId());
                // 客户端切换网络后，连接断开，但服务端还未触发断开事件。此时客户端重连上了，然后服务端触发了断开，此时不应该更新在线状态
                if (curCmdChannel == ctx.channel()) {
                    Solon.context().getBean(ProxyMutualService.class).offline(cmdChannelAttachInfo);
                    ProxyUtil.removeCmdChannel(ctx.channel());
                    // 防止下次换一个客户端，无法连接的情况
                    ProxyUtil.removeClientIdByLicenseId(cmdChannelAttachInfo.getLicenseId());
                }
                // 即便是因为上述原因断开，断开的日志依然要记录，方便排查问题
                Solon.context().getBean(ClientConnectRecordService.class).add(new ClientConnectRecordDO()
                        .setIp(((InetSocketAddress)ctx.channel().remoteAddress()).getAddress().getHostAddress())
                        .setLicenseId(cmdChannelAttachInfo.getLicenseId())
                        .setType(ClientConnectTypeEnum.DISCONNECT.getType())
                        .setMsg("")
                        .setCode(SuccessCodeEnum.SUCCESS.getCode())
                        .setCreateTime(new Date())
                );
            }
        }

        super.channelInactive(ctx);
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
//        super.exceptionCaught(ctx, cause);
//        if (ctx.channel().isActive()) {
//            ctx.channel().close();
//        }
        log.error("[Tunnel Channel] error", cause);
    }

    @Override
    public void userEventTriggered(ChannelHandlerContext ctx, Obj


chk,chkc)
	if chkc then return chkc:IsLocation(LOCATION_GRAVE) and chkc:IsControler(tp) and c27944249.filter(chkc,e,tp) end
	if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0
		and Duel.IsExistingTarget(c27944249.filter,tp,LOCATION_GRAVE,0,1,nil,e,tp) end
	Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
	local g=Duel.SelectTarget(tp,c27944249.filter,tp,LOCATION_GRAVE,0,1,1,nil,e,tp)
	Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,g,1,0,0)
end
function c27944249.operation(e,tp,eg,ep,ev,re,r,rp)
	local tc=Duel.GetFirstTarget()
	if tc:IsRelateToEffect(e) then
		Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP_DEFENSE)
	end
end


= dapper.BeginTransaction();
        var affect = dapper.Execute("""
            INSERT OR REPLACE INTO GenshinGachaItem (Uid, Id, Name, Time, ItemId, ItemType, RankType, GachaType, Count, Lang)
            VALUES (@Uid, @Id, @Name, @Time, @ItemId, @ItemType, @RankType, @GachaType, @Count, @Lang);
            """, list, t);
        t.Commit();
        _logger.LogInformation("Imported {count} gacha records for {game}.", affect, archive.Game);
        archive.Result = noName ? Lang.UIGFGachaService_ImportSuccessfulButNoRecordItemName : Lang.UIGFGachaService_ImportSuccessful;
    }

    private void ImportForStarRail(GachaUidArchiveDisplay archive)
    {
        List<StarRailGachaItem> list = new();
        DateTime TIME = new DateTime(2023, 4, 1);
        bool noName = false;
        foreach (StarRailGachaItem item in archive.hkrpgList ?? [])
        {
            var clone = item.Clone();
            if (clone.Id == 0)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "id"));
            }
            if (clone.ItemId == 0)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "item_id"));
            }
            if (clone.GachaType == 0)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "gacha_type"));
            }
            if (clone.Time < TIME)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "time"));
            }
            if (clone.RankType == 0)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "rank_type"));
            }
            if (clone.GachaId == 0)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_0FieldIsMissingInAGachaRecord, "gacha_id"));
            }
            if (string.IsNullOrWhiteSpace(clone.Name))
            {
                noName = true;
            }
            if (clone.Uid == 0)
            {
                clone.Uid = archive.Uid;
            }
            else if (clone.Uid != archive.Uid)
            {
                throw new UIGF4ImportException(archive.Game, archive.Uid, string.Format(Lang.UIGFGachaService_UidMismatchDetectedExpected0ButFound1, archive.Uid, clone.Uid));
            }
            clone.Time = item.Time.AddHours(archive.Timezone);
            list.Add(clone);
        }
        using var dapper = DatabaseService.CreateConnection();
        using var t = dapper.BeginTransaction();
        var affect = dapper.Execute("""
            INSERT OR REPLACE INTO StarRailGachaItem (Uid, Id, Name, Time, ItemId, ItemType, RankType, GachaType, GachaId, Cou


html/flowStartModal";
			option["title"] = "开始控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "text"){
			url = "/html/flowTextModal";
			option["title"] = "文本控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "script") {
			url = "/html/flowScriptModal";
			option["title"] = "js控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "java") {
			url = "/html/flowJavaModal";
			option["title"] = "java控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "python") {
			url = "/html/flowPythonModal";
			option["title"] = "python控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "linux") {
			url = "/html/flowLinuxModal";
			option["title"] = "linux控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "wonton") {
			url = "/html/flowWontonModal";
			option["title"] = "混沌控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "process") {
			url = "/html/flowProcessModal";
			option["title"] = "子流程控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "loop") {
			url = "/html/flowLoopModal";
			option["title"] = "循环控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "git") {
			url = "/html/flowGitModal";
			option["title"] = "GIT控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "sftp") {
			url = "/html/flowSftpModal";
			option["title"] = "SFTP控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "end") {
			url = "/html/flowEndModal";
			option["title"] = "结束控件";
			option["width"] = 1100;
		} else if($("#"+id).attr("eletype") == "demo") {
			url = "/html/flowDemoModal";
			option["title"] = "示例控件";
			option["width"] = 1100;
		}

		param["modalId"] = modalId.replace(/_Modal/g, "");
		param["eletype"] = $("#"+id).attr("eletype");
		param["option"] = option;
		if(url != null)
			common.showAjaxDialog(url, setDialogBtns(param), createModalCallBack, null, param);
	}
}

/**
 * 拖拽出的控件保存时，
 * 1、将name(控件名称),sign(控件是否保存)字段，同步到elementMap中对应的控件基本数据
 * 2、将拖拽控件下面的显示名称同步
 * @param elementId
 * @param name
 * @returns
 */
function saveElementUpdateCache(elementId, name) {
	var element = elementMap.get(elementId);
	element.setName(name);
	element.setSign("true");
	$("#name_" + elementId).html(name);
}
/**
 * 设置控件弹出框按钮及功能绑定
 * @param param
 * @returns 按钮集合
 */
function setDialogBtns(param) {
    var buttons = [];
	if(param.eletype == "start") {
		buttons = [
			{
				class: "btn btn-default",
				text: "增加",
				click: function() {
					var tableData = $("#" + param


apsed_time) {
                    Some(sleep_time) => {
                        thread::sleep(sleep_time);
                    },
                    None => {},
                };
            }
        }).unwrap()
    }
}
// This file is dual licensed under the terms of the Apache License, Version
// 2.0, and the BSD License. See the LICENSE file in the root of this repository
// for complete details.

use crate::x509;
use crate::x509::oid;

lazy_static::lazy_static! {
    // TODO: kind of verbose way to say "\x05\x00".
    static ref NULL_DER: Vec<u8> = asn1::write_single(&());
    pub(crate) static ref NULL_TLV: asn1::Tlv<'static> = asn1::parse_single(&NULL_DER).unwrap();
}

enum KeyType {
    Rsa,
    Dsa,
    Ec,
    Ed25519,
    Ed448,
}

enum HashType {
    None,
    Md5,
    Sha1,
    Sha224,
    Sha256,
    Sha384,
    Sha512,
}

fn identify_key_type(py: pyo3::Python<'_>, private_key: &pyo3::PyAny) -> pyo3::PyResult<KeyType> {
    let rsa_private_key: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.asymmetric.rsa")?
        .getattr("RSAPrivateKey")?
        .extract()?;
    let dsa_key_type: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.asymmetric.dsa")?
        .getattr("DSAPrivateKey")?
        .extract()?;
    let ec_key_type: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.asymmetric.ec")?
        .getattr("EllipticCurvePrivateKey")?
        .extract()?;
    let ed25519_key_type: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.asymmetric.ed25519")?
        .getattr("Ed25519PrivateKey")?
        .extract()?;
    let ed448_key_type: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.asymmetric.ed448")?
        .getattr("Ed448PrivateKey")?
        .extract()?;

    if rsa_private_key.is_instance(private_key)? {
        Ok(KeyType::Rsa)
    } else if dsa_key_type.is_instance(private_key)? {
        Ok(KeyType::Dsa)
    } else if ec_key_type.is_instance(private_key)? {
        Ok(KeyType::Ec)
    } else if ed25519_key_type.is_instance(private_key)? {
        Ok(KeyType::Ed25519)
    } else if ed448_key_type.is_instance(private_key)? {
        Ok(KeyType::Ed448)
    } else {
        Err(pyo3::exceptions::PyTypeError::new_err(
            "Key must be an rsa, dsa, ec, ed25519, or ed448 private key.",
        ))
    }
}

fn identify_hash_type(
    py: pyo3::Python<'_>,
    hash_algorithm: &pyo3::PyAny,
) -> pyo3::PyResult<HashType> {
    if hash_algorithm.is_none() {
        return Ok(HashType::None);
    }

    let hash_algorithm_type: &pyo3::types::PyType = py
        .import("cryptography.hazmat.primitives.hashes")?
        .getattr("HashAlgorithm")?
        .extract()?;
    if !hash_algorithm_type.is_instance(hash_algorithm)? {
        return Err(pyo3::exceptions::PyTypeError::new_err(
            "Algorithm must be a registered hash algorithm.",


);
  static String _$name(GitTag v) => v.name;
  static const Field<GitTag, String> _f$name = Field('name', _$name);

  @override
  final MappableFields<GitTag> fields = const {
    #sha: _f$sha,
    #name: _f$name,
  };

  static GitTag _instantiate(DecodingData data) {
    return GitTag(sha: data.dec(_f$sha), name: data.dec(_f$name));
  }

  @override
  final Function instantiate = _instantiate;

  static GitTag fromMap(Map<String, dynamic> map) {
    return ensureInitialized().decodeMap<GitTag>(map);
  }

  static GitTag fromJson(String json) {
    return ensureInitialized().decodeJson<GitTag>(json);
  }
}

mixin GitTagMappable {
  String toJson() {
    return GitTagMapper.ensureInitialized().encodeJson<GitTag>(this as GitTag);
  }

  Map<String, dynamic> toMap() {
    return GitTagMapper.ensureInitialized().encodeMap<GitTag>(this as GitTag);
  }

  GitTagCopyWith<GitTag, GitTag, GitTag> get copyWith =>
      _GitTagCopyWithImpl<GitTag, GitTag>(this as GitTag, $identity, $identity);
  @override
  String toString() {
    return GitTagMapper.ensureInitialized().stringifyValue(this as GitTag);
  }

  @override
  bool operator ==(Object other) {
    return GitTagMapper.ensureInitialized().equalsValue(this as GitTag, other);
  }

  @override
  int get hashCode {
    return GitTagMapper.ensureInitialized().hashValue(this as GitTag);
  }
}

extension GitTagValueCopy<$R, $Out> on ObjectCopyWith<$R, GitTag, $Out> {
  GitTagCopyWith<$R, GitTag, $Out> get $asGitTag =>
      $base.as((v, t, t2) => _GitTagCopyWithImpl<$R, $Out>(v, t, t2));
}

abstract class GitTagCopyWith<$R, $In extends GitTag, $Out>
    implements GitReferenceCopyWith<$R, $In, $Out> {
  @override
  $R call({String? sha, String? name});
  GitTagCopyWith<$R2, $In, $Out2> $chain<$R2, $Out2>(Then<$Out2, $R2> t);
}

class _GitTagCopyWithImpl<$R, $Out> extends ClassCopyWithBase<$R, GitTag, $Out>
    implements GitTagCopyWith<$R, GitTag, $Out> {
  _GitTagCopyWithImpl(super.value, super.then, super.then2);

  @override
  late final ClassMapperBase<GitTag> $mapper = GitTagMapper.ensureInitialized();
  @override
  $R call({String? sha, String? name}) => $apply(FieldCopyWithData(
      {if (sha != null) #sha: sha, if (name != null) #name: name}));
  @override
  GitTag $make(CopyWithData data) => GitTag(
      sha: data.get(#sha, or: $value.sha),
      name: data.get(#name, or: $value.name));

  @override
  GitTagCopyWith<$R2, GitTag, $Out2> $chain<$R2, $Out2>(Then<$Out2, $R2> t) =>
      _GitTagCopyWithImpl<$R2, $Out2>($value, $cast, t);
}
import 'dart:io';

import 'package:io/io.dart';

/// Represents an FVM-specific exception that carries a user-facing message.
///
/// Exceptions of this type are intended to be self-explanatory, no debugging info
class AppException implements Exception {
  /// User-readable error message.
  final String message;

  /// Initializes an instance with a user-readable message.
  const AppException(this.message);

  @override
  String toString() => message;
}

class AppDetailedException extends AppException {
  final String info;

  /// Constructor
  const AppDetailedException(super.message, this.info);

  @override
  String toString() => message;
}

bool checkIfNeedsPrivilegePermission(FileSystemException err) {
  retu


        emitByte(0xB6);
        emitOperandHelper(dst, src, 0);
    }

    public final void movzbl(Register dst, Register src) {
        AMD64RMOp.MOVZXB.emit(this, OperandSize.DWORD, dst, src);
    }

    public final void movzbq(Register dst, Register src) {
        AMD64RMOp.MOVZXB.emit(this, OperandSize.QWORD, dst, src);
    }

    public final void movzwl(Register dst, AMD64Address src) {
        prefix(src, dst);
        emitByte(0x0F);
        emitByte(0xB7);
        emitOperandHelper(dst, src, 0);
    }

    public final void negl(Register dst) {
        NEG.emit(this, DWORD, dst);
    }

    public final void notl(Register dst) {
        NOT.emit(this, DWORD, dst);
    }

    public final void notq(Register dst) {
        NOT.emit(this, QWORD, dst);
    }

    @Override
    public final void ensureUniquePC() {
        nop();
    }

    public final void nop() {
        nop(1);
    }

    public void nop(int count) {
        int i = count;
        if (UseNormalNop) {
            assert i > 0 : " ";
            // The fancy nops aren't currently recognized by debuggers making it a
            // pain to disassemble code while debugging. If assert are on clearly
            // speed is not an issue so simply use the single byte traditional nop
            // to do alignment.

            for (; i > 0; i--) {
                emitByte(0x90);
            }
            return;
        }

        if (UseAddressNop) {
            //
            // Using multi-bytes nops "0x0F 0x1F [Address]" for AMD.
            // 1: 0x90
            // 2: 0x66 0x90
            // 3: 0x66 0x66 0x90 (don't use "0x0F 0x1F 0x00" - need patching safe padding)
            // 4: 0x0F 0x1F 0x40 0x00
            // 5: 0x0F 0x1F 0x44 0x00 0x00
            // 6: 0x66 0x0F 0x1F 0x44 0x00 0x00
            // 7: 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00
            // 8: 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
            // 9: 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
            // 10: 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
            // 11: 0x66 0x66 0x66 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00

            // The rest coding is AMD specific - use consecutive Address nops

            // 12: 0x66 0x0F 0x1F 0x44 0x00 0x00 0x66 0x0F 0x1F 0x44 0x00 0x00
            // 13: 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00 0x66 0x0F 0x1F 0x44 0x00 0x00
            // 14: 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00
            // 15: 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x0F 0x1F 0x80 0x00 0x00 0x00 0x00
            // 16: 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00 0x0F 0x1F 0x84 0x00 0x00 0x00 0x00 0x00
            // Size prefixes (0x66) are added for larger sizes

            while (i >= 22) {
                i -= 11;
                emitByte(0x66); // size prefix
                emitByte(0x66); // size prefix
                emitByte(0x66); // size prefix
                addrNop8();
            }
            // Generate first nop for size between 21-12
            switch (i) {
                case 21:
                    i -= 11;
                    emitByte(0x66); // size prefix
                    emitByte(0x66); // size prefix
                    emitByte(0x66); // size prefix


.BatteryInfo.html#usageDetails)
        ///
        /// Required feature: java-lang-String
        #[cfg(any(feature = "all", feature = "java-lang-String"))]
        pub fn usageDetails<'env>(&'env self) -> __jni_bindgen::std::option::Option<__jni_bindgen::Local<'env, crate::java::lang::String>> {
            unsafe {
                let env = __jni_bindgen::Env::from_ptr(self.0.env);
                let (class, field) = env.require_class_field("android/app/ApplicationErrorReport$BatteryInfo\0", "usageDetails\0", "Ljava/lang/String;\0");
                env.get_object_field(class, field)
            }
        }

        /// **set** public [usageDetails](https://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html#usageDetails)
        ///
        /// Required feature: java-lang-String
        #[cfg(any(feature = "all", feature = "java-lang-String"))]
        pub fn set_usageDetails<'env, 'obj>(&'env self, value: impl __jni_bindgen::std::convert::Into<__jni_bindgen::std::option::Option<&'obj crate::java::lang::String>>) {
            unsafe {
                let env = __jni_bindgen::Env::from_ptr(self.0.env);
                let (class, field) = env.require_class_field("android/app/ApplicationErrorReport$BatteryInfo\0", "usageDetails\0", "Ljava/lang/String;\0");
                env.set_object_field(class, field, value)
            }
        }

        /// **get** public [usagePercent](https://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html#usagePercent)
        pub fn usagePercent<'env>(&'env self) -> i32 {
            unsafe {
                let env = __jni_bindgen::Env::from_ptr(self.0.env);
                let (class, field) = env.require_class_field("android/app/ApplicationErrorReport$BatteryInfo\0", "usagePercent\0", "I\0");
                env.get_int_field(class, field)
            }
        }

        /// **set** public [usagePercent](https://developer.android.com/reference/android/app/ApplicationErrorReport.BatteryInfo.html#usagePercent)
        pub fn set_usagePercent<'env>(&'env self, value: i32) {
            unsafe {
                let env = __jni_bindgen::Env::from_ptr(self.0.env);
                let (class, field) = env.require_class_field("android/app/ApplicationErrorReport$BatteryInfo\0", "usagePercent\0", "I\0");
                env.set_int_field(class, field, value)
            }
        }
    }
}
mod plot;
mod reader;

pub use self::plot::{contributions_per_user, month_plot};
pub use self::reader::{read_chats, Record};
<gh_stars>1-10
use cidr_radix;
use std::sync::{RwLock, RwLockReadGuard, RwLockWriteGuard};
use ipnet::{Ipv4Net, Ipv6Net, IpNet};
use std::str::FromStr;

/// an implementation of CIDRTree specifying ip address which are allowed
/// aka addressed not included in the cidr tree
pub struct AllowList {
    // any addresses included in this are not allowed
    cidr_tree: cidr_radix::CIDRTree,
}

impl AllowList {
    pub fn new() -> Self {
        Self{
            cid


Bracket = pairs[lastOpeningBracket];
      if (char !== nextClosingBracket) return false;
    }
  }

  return stack.length === 0;
}

import { assertEquals } from "./deps.ts";

Deno.test("returns true", () => {
  assertEquals(isValid("{[()]}"), true);
  assertEquals(isValidWithStack("{[()]}"), true);
});

Deno.test("returns true", () => {
  assertEquals(isValid("{}[]()"), true);
  assertEquals(isValidWithStack("{}[]()"), true);
});

Deno.test("returns true", () => {
  assertEquals(isValid("{{[[(())]]}}"), true);
  assertEquals(isValidWithStack("{{[[(())]]}}"), true);
});

Deno.test("returns true", () => {
  assertEquals(isValid("{[(])}"), false);
  assertEquals(isValidWithStack("{[(])}"), false);
});

Deno.test("returns true", () => {
  assertEquals(isValid("}}})))]]]"), false);
  assertEquals(isValidWithStack("}}})))]]]"), false);
});

Deno.test("returns true", () => {
  assertEquals(isValid(""), true);
  assertEquals(isValidWithStack(""), true);
});
/// <reference path="Kernel/NoSpecimen.ts" />
/// <reference path="Kernel/ISpecimenBuilder.ts" />

module AutoFixtureTS
{

    // Class
    export class NumericSequenceGenerator implements AutoFixtureTS.Kernel.ISpecimenBuilder {

        private _num = 0;

        public CreateAnonymous(): number {
            this._num += 1;
            return this._num;
        }

        public Create(request: Object): Object
        {
            if (typeof request != "number")
                return new AutoFixtureTS.Kernel.NoSpecimen(request);

            return this.CreateAnonymous();
        }
    }

}

import { Widget } from './widget';
import { IField, IZdField, IRegisteredComponent } from './interfaces';
import { Component, ComponentFactory } from './component';
import { IDictionary } from '../utils/interfaces';
import { EventFactory } from './event';
import { PlannedContainer } from '../metadata/planned_container';

/**
 * Defines field behavior and is used as base for all field components.
 */
export class Field extends Component implements IZdField {

  /**
   * Registered component type
   */
  public type!: string;

  /**
   * Sets a label
   */
  public label: string = '';

  /**
   * Controls visibility
   */
  public isVisible: boolean = true;

  /**
   * Controls accessibilty
   */
  public readonly: boolean = false;

  /**
   * Defines field is disabled
   */
  public disabled: boolean = false;

  /**
   * Defines if the field should controls the data sort
   * @todo should be here or in list interface?
   */
  public sortable: boolean = true;

  /**
   * Displays component on each row based on field type
   * @todo should be here or in list interface?
   */
  public editable: boolean = false;

  /**
   * Field parent
   */
  public parent!: Widget;

  /**
   * Sets field alignment
   * @todo should be here or in list interface?
   */
  public align: string = 'left';

  /**
   * Controls column max size
   * @todo should be here or in list interface?
   */
  public maxWidth: string = '';

  /**
   * Controls column min size
   * @todo should be here or in list interface?
   */
  public minWidth: string = '';

  /**
   * All events that was registered to the field
   */
  public events: IDictionary<Function> = {};


 | -0x2220 + -0x19c0 * -0x1 + 0x1 * 0x89f & _0x509964);
                }
            }
        }
        return _0x7d7cd2['join']('');
    }
    function _0x4b9792(_0x26e715, _0xeefe08) {
        for (var _0xa12f14 = new Array(_0xeefe08), _0x25a21d = -0xa67 + -0x102 * 0x1f + 0x1 * 0x29a5, _0xc460fb = -0xa + -0xa95 + 0xa9f * 0x1, _0x585b49 = _0x26e715['length']; _0x25a21d < _0xeefe08 && _0xc460fb < _0x585b49; _0x25a21d++) {
            var _0x2e6b51 = _0x26e715['charCodeAt'](_0xc460fb++);
            switch (_0x2e6b51 >> 0x1f1 * -0x11 + -0x1 * -0x1307 + 0x6 * 0x255) {
            case 0x1a3c * 0x1 + -0x48 * 0x22 + 0xb * -0x184:
            case -0x1566 + 0x1c46 + -0x6df:
            case 0x1c * -0x5c + -0x14b5 + 0x1 * 0x1ec7:
            case 0x1cf9 + 0x6 * 0x10c + 0x1a * -0x15b:
            case 0x270c + -0x771 + 0x1 * -0x1f97:
            case 0xeb * -0xb + -0x184 + 0x2 * 0x5d1:
            case 0x1399 + -0x149 * 0x11 + 0x246:
            case -0x16 * -0x10b + 0x5c * 0x2e + -0x2773:
                _0xa12f14[_0x25a21d] = _0x2e6b51;
                break;
            case -0xafd + -0x1b9d * -0x1 + -0x1094:
            case 0x1244 + 0x38b * -0x4 + -0x40b:
                if (!(_0xc460fb < _0x585b49))
                    throw new Error('Unfinished\x20UTF-8\x20octet\x20sequence');
                _0xa12f14[_0x25a21d] = (0x1e15 + -0x259e + 0x7a8 & _0x2e6b51) << 0x2 * 0xae1 + -0xb56 + -0xa66 | 0x1d48 + 0x109f + -0x2da8 & _0x26e715['charCodeAt'](_0xc460fb++);
                break;
            case -0x5bb + 0x1f3a + -0x1971:
                if (!(_0xc460fb + (0x43 * 0x7c + -0x1209 + 0x2d * -0x52) < _0x585b49))
                    throw new Error('Unfinished\x20UTF-8\x20octet\x20sequence');
                _0xa12f14[_0x25a21d] = (-0x103b + -0x14f4 + 0x253e & _0x2e6b51) << -0x4ac * 0x3 + -0x1627 + 0x2437 | (0xf63 + -0x925 + 0x133 * -0x5 & _0x26e715['charCodeAt'](_0xc460fb++)) << 0x68c + 0x982 + -0x1008 | -0x1f91 + 0x1 * 0x1e53 + 0x17d & _0x26e715['charCodeAt


 = greedy_driver(D, use_grid, args.iterations, args.sha_base_budget,
                                           rng, args.subs_ceiling, args.cache_file,
                                           args.decay, args.smoothing, args.log_csv, examples_out)
    elif args.tuner == "sha":
        winner_p, winner_m = sha_driver(D, use_grid, args.iterations, args.sha_rungs, args.sha_keep_ratio,
                                        args.sha_base_budget, rng, args.subs_ceiling, args.cache_file,
                                        args.decay, args.smoothing, args.log_csv, examples_out)
    else:
        winner_p, winner_m = hybrid_driver(D, use_grid, args.iterations, args.epsilon_start, args.epsilon_final,
                                           args.epsilon_iters, args.sha_base_budget, rng, args.subs_ceiling,
                                           args.cache_file, args.decay, args.smoothing, args.log_csv, examples_out)

    # Persist best config for this digit
    if winner_p is not None:
        best_store[str(D)] = {"B": winner_p.B, "L": winner_p.L, "M": winner_p.M, "W": list(winner_p.W)}
        save_json(args.best_file, best_store)

    # Save up to args.examples examples from this digit pass for final display
    for tup in examples_out:
        if len(final_examples) < args.examples:
            final_examples.append(tup)
        else:
            break

# Print exactly two (or args.examples) Goldbach decompositions found
# If we didn't collect enough during tuning (rare), generate a couple now using the last digit & best config.
if len(final_examples) < args.examples and digits_list:
    D = digits_list[-1]
    rec = best_store.get(str(D))
    if rec:
        best_p = ParamSet(B=int(rec["B"]), L=int(rec["L"]), M=int(rec["M"]), W=tuple(int(x) for x in rec["W"]))
        subtractor_primes, pre_primes, wheel_list, res_cache = make_prime_assets(args.subs_ceiling, list(best_p.W), best_p.L)
        total_items = len(subtractor_primes)
        band_size = max(1, int(best_p.B))
        num_bands = (total_items + band_size - 1) // band_size
        cache: Dict[str, Dict[str, List[int]]] = load_json(args.cache_file, {})
        stats = ensure_digit_stats(cache, D, num_bands)
        order = band_order_for_digits(stats, args.decay, args.smoothing)
        # produce decompositions
        tries = 0
        while len(final_examples) < args.examples and tries < 1000:
            n = random_even_with_digits(D, rng)
            _stats_shadow = {"trials":[0]*num_bands, "successes":[0]*num_bands}  # don't perturb cache here
            found, checks, hit_band, pair = search_one_n(
                n, subtractor_primes, pre_primes, wheel_list, res_cache,
                band_size, order, best_p.M, _stats_shadow
            )
            if found and pair:
                final_examples.append((pair[0], pair[1], n))
            tries += 1

# Exactly N example lines
for (p, q, n) in final_examples[:args.examples]:
    print(f"{p} + {q} = {n}")


v xmlns:nohtml="com.til.utils.CommonUtils" xmlns:java="java" class="mostViewedSlide">

Buy-Sell Ideas

Money-making ideas

<a data-track="mvlnk3" href="/markets/stocks/news/titan-tata-steel-among-11-buy-sell-ideas-that-may-give-breakout-returns/mazagon-dock-shipbuilders-buy-target-rs-272


cd1e
.thumb
branch_225cd38: @ 225cd38 :thumb
	mov     r6, #0x0
	mov     r4, r5
.thumb
branch_225cd3c: @ 225cd3c :thumb
	ldr     r0, [r4, #0x0]
	bl      Function_2009754
	.hword  0x1c76 @ add r6, r6, #0x1
	.hword  0x1d24 @ add r4, r4, #0x4
	cmp     r6, #0x4
	blt     branch_225cd3c
	ldr     r0, [r5, #0x10]
	bl      free
	pop     {r4-r6,pc}
@ 0x225cd52

.align 2, 0

.thumb
Function_225cd54: @ 225cd54 :thumb
	push    {r3-r7,lr}
	add     sp, #-0x20
	mov     r5, r0
	ldr     r6, [r5, #0x14]
	mov     r4, #0x0
	str     r1, [sp, #0x18]
	str     r2, [sp, #0x1c]
	mov     r7, r3
	mov     r1, r4
	cmp     r6, #0x0
	bls     branch_225cd84
	ldr     r3, [r5, #0x10]
	mov     r2, r3
.thumb
branch_225cd6e: @ 225cd6e :thumb
	ldr     r0, [r2, #0x0]
	cmp     r0, #0x0
	bne     branch_225cd7c
	mov     r0, #0x38
	mul     r0, r1
	add     r4, r3, r0
	b       branch_225cd84
@ 0x225cd7c

.thumb
branch_225cd7c: @ 225cd7c :thumb
	.hword  0x1c49 @ add r1, r1, #0x1
	add     r2, #0x38
	cmp     r1, r6
	bcc     branch_225cd6e
.thumb
branch_225cd84: @ 225cd84 :thumb
	cmp     r4, #0x0
	bne     branch_225cd8c
	bl      ErrorHandling
.thumb
branch_225cd8c: @ 225cd8c :thumb
	ldr     r0, [sp, #0x38]
	str     r7, [sp, #0x0]
	str     r0, [sp, #0x4]
	ldr     r0, [sp, #0x3c]
	ldr     r2, [sp, #0x18]
	str     r0, [sp, #0x8]
	ldr     r0, [sp, #0x40]
	ldr     r3, [sp, #0x1c]
	str     r0, [sp, #0xc]
	ldr     r0, [sp, #0x44]
	mov     r1, r4
	str     r0, [sp, #0x10]
	ldr     r0, [sp, #0x48]
	str     r0, [sp, #0x14]
	mov     r0, r5
	bl      Function_225cde0
	mov     r0, r4
	add     sp, #0x20
	pop     {r3-r7,pc}
@ 0x225cdb4

.thumb
Function_225cdb4: @ 225cdb4 :thumb
	push    {r3,lr}
	add     sp, #-0x20
	add     r0, #0x14
	str     r0, [sp, #0x4]
	lsl     r0, r2, #12
	str     r0, [sp, #0x8]
	lsl     r0, r3, #12
	str     r0, [sp, #


 19200, Parity.None, 8, StopBits.One);
            serialPort.Handshake = Handshake.None;
            serialPort.ReadTimeout = 250;  // SerialPort.InfiniteTimeout;
            serialPort.WriteTimeout = 250; // SerialPort.InfiniteTimeout;
            serialPort.Open();
            return serialPort.BaseStream;
        }

        public override void SendPacket(T packet)
        {
            byte[] binary = packetConverter.ToBinary(packet);
            byte[] buffer = Slip.CreateSlipPacket(binary);
            stream.Write(buffer, 0, buffer.Length);
        }

        public override void Dispose()
        {
            // Close serial port if open
            if (stream != null)
            {
                stream.Close();
                stream = null;
            }
            base.Dispose();
        }

    }
}


han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Sans";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Sans CNS";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Sans GB";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Serif";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Serif CNS";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Biaodian Pro Serif GB";
  font-weight: bold;
  src: url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.woff?v3.3.0") format("woff"), url("https://cdnjs.loli.net/ajax/libs/Han/3.3.0/font/han.otf?v3.3.0") format("opentype");
  unicode-range: U+2014, U+2026, U+00B7;
}
@font-face {
  font-family: "Latin Italic Serif";
  src: local("Georgia Italic"), local("Times New Roman Italic"), local(Georgia-Italic), local(TimesNewRomanPS-ItalicMT), local(Times-Italic);
}
@font-face {
  font-family: "Latin Italic Serif";
  font-weight: 700;
  src: local("Georgia Bold Italic"), local("Times New Roman Bold Italic"), local(Georgia-BoldItalic), local(TimesNewRomanPS-BoldItalicMT), local(Times-Italic);
}
@font-face {
  font-family: "Latin Italic Sans";
  src: local("Helvetica Neue Italic"), local("Helvetica Oblique"), local("Arial I


rt", "dusty bottle of vinegar Port"),
    new DustyBottle(
        ItemPool.DUSTY_BOTTLE_OF_PINOT_NOIR,
        "dusty bottle of Pinot Noir",
        "dusty bottle of spooky Pinot Noir"),
    new DustyBottle(
        ItemPool.DUSTY_BOTTLE_OF_ZINFANDEL,
        "dusty bottle of Zinfandel",
        "dusty bottle of great Zinfandel"),
    new DustyBottle(
        ItemPool.DUSTY_BOTTLE_OF_MARSALA,
        "dusty bottle of Marsala",
        "dusty bottle of glassy Marsala"),
    new DustyBottle(
        ItemPool.DUSTY_BOTTLE_OF_MUSCAT, "dusty bottle of Muscat", "dusty bottle of bad Muscat")
  };

  private ConsumablesDatabase() {}

  public static void reset() {
    ConsumablesDatabase.readConsumptionData(
        "fullness.txt", KoLConstants.FULLNESS_VERSION, ConsumptionType.EAT);
    ConsumablesDatabase.readConsumptionData(
        "inebriety.txt", KoLConstants.INEBRIETY_VERSION, ConsumptionType.DRINK);
    ConsumablesDatabase.readConsumptionData(
        "spleenhit.txt", KoLConstants.SPLEENHIT_VERSION, ConsumptionType.SPLEEN);
    ConsumablesDatabase.readNonfillingData();

    // Once we have all this data, we can init the ConcoctionDatabase.
    ConcoctionDatabase.resetUsableList();
  }

  static {
    populateAndBuild();
  }

  private static void populateAndBuild() {
    for (int i = 0; i < AVERAGE_ADVENTURE_CACHE_SIZE; ++i) {
      ConsumablesDatabase.currentAverageAdventures.add(new HashMap<>());
    }
    ConsumablesDatabase.reset();
  }

  // Used for testing to replicate static initialization
  public static void clearAndRebuild() {
    consumableByItemId.clear();
    consumableByName.clear();
    allConsumables.clear();
    currentAverageAdventures.clear();
    populateAndBuild();
  }

  public static void writeConsumable(final PrintStream writer, final Consumable consumable) {
    writer.println(consumable.toString());
  }

  private static void readConsumptionData(String filename, int version, ConsumptionType usage) {
    try (BufferedReader reader = FileUtilities.getVersionedReader(filename, version)) {
      String[] data;

      while ((data = FileUtilities.readData(reader)) != null) {
        ConsumablesDatabase.saveConsumptionValues(data, usage);
      }
    } catch (IOException e) {
      StaticEntity.printStackTrace(e);
    }
  }

  private static Consumable setConsumptionData(
      final String name,
      final Integer fullness,
      final Integer inebriety,
      final Integer spleenHit,
      final int level,
      final ConsumableQuality quality,
      final String adventures,
      final String muscle,
      final String mysticality,
      final String moxie,
      final String note) {
    Consumable existing = ConsumablesDatabase.consumableByName.get(name);
    Set<String> aliases = existing != null ? existing.aliases : new TreeSet<>(List.of(name));
    Consumable consumable =
        new Consumable(
            name,
            fullness != null ? fullness : existing != null ? existing.getRawFullness() : null,
            inebriety != null ? inebriety : existing != null ? existing.getRawInebriety() : null,
            spleenHit != null ? spleenHit : existing != null ? existing.getRawSpleenHit() : null,
            level,
            quality,
            adventures,
            new String[] {muscle, mysticality, m


Dates
            .map((e) => e.date)
            .whereNot((d) => queriedDates.contains(d))
            .where(
              (d) =>
                  state.filesSummary.items.containsKey(d) ||
                  state.localFilesSummary.items.containsKey(d),
            )
            .toSet();
    // remove dates no longer missing
    _queryCount.removeWhere((k, v) => !missingDates.contains(k));
    if (missingDates.isNotEmpty && !_isQueryingFiles) {
      final missingDatesSorted = missingDates.sortedBySelf();
      for (final d in missingDatesSorted.reversed) {
        _queryCount[d] = (_queryCount[d] ?? 0) + 1;
        if (_queryCount[d]! > 4) {
          _log.warning(
            "[_requestMoreFiles] Date failed for too many times, ignore: $d",
          );
          continue;
        }
        _requestFilesFrom(missingDates.sortedBySelf().last);
        break;
      }
    }
  }

  /// Query a set number of files taken on or before [at]
  Future<void> _requestFilesFrom(Date at) async {
    const targetFileCount = 100;

    _log.info("[_requestFilesFrom] $at");
    _isQueryingFiles = true;
    try {
      final summary = state.filesSummary;
      final localSummary = state.localFilesSummary;
      var dates = {
        ...summary.items.keys,
        ...localSummary.items.keys,
      }.sorted((a, b) => b.compareTo(a));
      final i = dates.indexWhere((e) => e.isBeforeOrAt(at));
      if (i == -1) {
        _log.info("[_requestFilesFrom] No more files before $at");
        return;
      }
      dates = dates.sublist(i);
      final begin = dates.first;
      _log.info("[_requestFilesFrom] First date of interest: $begin");
      var count = 0;
      Date? end;
      final included = <Date>[];
      for (final d in dates) {
        included.add(d);
        count += (summary.items[d]?.count ?? 0) + (localSummary.items[d] ?? 0);
        end = d;
        if (count >= targetFileCount) {
          break;
        }
      }
      _log.info("[_requestFilesFrom] Query $count files until $end");
      await Future.wait([
        filesController.queryTimelineByDateRange(
          DateRange(from: end, to: at.add(day: 1)),
        ),
        localFilesController.queryTimelineByDateRange(
          DateRange(from: end, to: at.add(day: 1)),
        ),
      ]);
    } finally {
      _isQueryingFiles = false;
    }
  }

  List<_MinimapItem> _makeMonthGroupMinimapItems({
    required Map<Date, int> filesSummary,
    required double itemSize,
    required int itemPerRow,
    required double viewHeight,
  }) {
    _log.info(
      "[_makeMonthGroupMinimapItems] itemSize: $itemSize, itemPerRow: $itemPerRow, viewHeight: $viewHeight",
    );
    double position = 0;
    Date? currentMonth;
    double currentMonthY = 0;
    var currentMonthCount = 0;
    final results = <_MinimapItem>[];
    for (final e in filesSummary.entries) {
      final thisMonth = Date(e.key.year, e.key.month);
      if (currentMonth != thisMonth) {
        if (currentMonth != null) {
          final h = _getLogicalHeightByItemCount(
            itemCount: currentMonthCount,
            rowHeight: itemSize,
            itemPerRow: itemPerRow,
          );
          results.add(
            _MinimapItem(
              date: currentMonth,
              logicalY: currentMonthY,
              logicalHeight: h,
            ),
          );
          position += h;
        }
        currentMonth = thisMonth;
        currentMonthY = position;
        currentMonthCount = e.value;
      } else {
        currentMonthCount += e.value;
      }
    }
    // add the last month
    if (currentMonth != null


(!itemResult.selector || !itemResult.result || alreadyVoted.has(j)) {
            continue;
          }
          if (itemResult.selector === otherResult.selector && deepEquality(itemResult.result, otherResult.result)) {
            alreadyVoted.add(j);
            voteIndicesCount[i]++;
          }
        }
      }

      // sort to highest vote first
      const index = Object.entries(voteIndicesCount).sort((a, b) => b[1] - a[1])[0];

      // if no valid votes, return
      if (index == null) {
        this.log("no valid selector for array group found in " + finder(mainCandidate));
        return;
      }

      // if there are more than two items but each has only one vote, this result should be meaningless
      // maybe use an percentage
      if (voteIndicesCount[index[0]] === 1 && results.length > 2) {
        this.log("no best selector found in vote in " + finder(mainCandidate));
        return;
      }
      // string indices also work with array, else maybe use a map instead of an object
      const finalResult = results[index[0] as unknown as number];

      // set values to state right after this result
      this.usedCandidates = finalResult.usedCandidates;
      this.candidates = finalResult.candidates;

      // this selector should be defined
      keyResult.selector = finalResult.selector;
      keyResult.properties = finalResult.result;

      // remove all "used" candidates from the candidates pool
      for (const element of mainCandidateGroups) {
        this.removeCandidate(element);
      }
      this.removeCandidate(mainCandidate);
    } else {
      keyResult.selector = finder(mainCandidate, { root });

      const usedCandidates: Record<string, HTMLElement> = {};

      for (const [subKey, subValue] of Object.entries(groupProperties)) {
        if (subValue.properties) {
          keyResult.properties[subKey] = this.generateGroupResult(
            subKey,
            subValue,
            subValue.properties,
            mainCandidate,
            propertyKey,
          );
        } else {
          keyResult.properties[subKey] = this.generatePropertyResult(
            subKey,
            propertyKey,
            subValue,
            mainCandidate,
            usedCandidates,
          );
        }
      }
      this.removeCandidate(mainCandidate);
    }
    this.log(`Group selector for '${groupKey}'${groupConfig.array ? " (array)" : ""}: ${keyResult.selector || ""}`);
    return keyResult;
  }

  private removeCandidate(node: HTMLElement) {
    const index = this.candidates.indexOf(node);

    if (index >= 0) {
      this.candidates.splice(index, 1);
      this.usedCandidates.push(node);
    }
  }

  private generateResult(config: Config) {
    const result: Record<string, any> = {};

    Object.entries(config.properties).forEach(([key, value]) => {
      if (value.properties) {
        result[key] = this.generateGroupResult(key, value, value.properties, this._doc.documentElement);
      } else {
        result[key] = this.generatePropertyResult(key, "", value, this._doc.documentElement, {});
      }
    });
    return result;
  }

  public parse(config: Config) {
    this.log("**** init ****");
    const result = {} as any;
    config.verbosity = config.verbosity || 0;
    this.skipped = 0;
    this.visited = 0;
    this.candidates = [];
    this.usedCandidates = [];
    this.commonTextSnippets = {};
    this.propertyMap = this.initConfigPropertyMap(config.properties);
    // We can't grab an article if we don't have a page!
    if (!this._doc.body) {
      this.log("No body found in document. Abort.");
      return null;
    }

    const node


2018 Parity Technologies (UK) Ltd.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.

use crate::upgrade::{InboundUpgrade, OutboundUpgrade, UpgradeInfo};
use futures::future;
use multistream_select::Negotiated;
use std::iter;
use void::Void;

/// Dummy implementation of `UpgradeInfo`/`InboundUpgrade`/`OutboundUpgrade` that doesn't support
/// any protocol.
#[derive(Debug, Copy, Clone)]
pub struct DeniedUpgrade;

impl UpgradeInfo for DeniedUpgrade {
    type Info = &'static [u8];
    type InfoIter = iter::Empty<Self::Info>;

    fn protocol_info(&self) -> Self::InfoIter {
        iter::empty()
    }
}

impl<C> InboundUpgrade<C> for DeniedUpgrade {
    type Output = Void;
    type Error = Void;
    type Future = future::Empty<Self::Output, Self::Error>;

    fn upgrade_inbound(self, _: Negotiated<C>, _: Self::Info) -> Self::Future {
        future::empty()
    }
}

impl<C> OutboundUpgrade<C> for DeniedUpgrade {
    type Output = Void;
    type Error = Void;
    type Future = future::Empty<Self::Output, Self::Error>;

    fn upgrade_outbound(self, _: Negotiated<C>, _: Self::Info) -> Self::Future {
        future::empty()
    }
}

// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

//! LoWPAN Dummy Driver

use anyhow::{Context as _, Error};
use fidl_fuchsia_lowpan_device::RegisterMarker;
use fuchsia_async as fasync;
use fuchsia_component::client::connect_to_service;
use fuchsia_syslog::macros::*;
use lowpan_driver_common::{register_and_serve_driver, DummyDevice};
use std::default::Default;

#[fasync::run_singlethreaded]
async fn main() -> Result<(), Error> {
    fuchsia_syslog::init_with_tags(&["lowpan_dummy_driver"]).context("initialize logging")?;

    let name = "lowpan0";

    let device = DummyDevice::default();

    fx_log_info!("Connecting to LoWPAN service");

    let registry = connect_to_service::<RegisterMarker>()
        .context("Failed to connect to LoWPAN Registry service")?;

    register_and_serve_driver(name, registry, &device)
        .await


ription.

|Organ or Structure name | Label|
|:-----|:-----|
spleen |1 |
kidney_right | 2 |
kidney_left | 3 |
gallbladder | 4 |
liver | 5 |
esophagus | 6 |
stomach | 7 |
aorta	| 8 |
inferior_vena_cava | 9 |
portal_vein_and_splenic_vein |	10 |
pancreas |	11 |
adrenal_gland_right |	12 |
adrenal_gland_left |	13 |
lung_right |	14 |
lung_left |	15 |
small_bowel |	16 |
duodenum |	17 |
colon |	18 |
iliac_artery_left |	19 |
iliac_artery_right |	20 |
iliac_vena_left |	21 |
iliac_vena_right |	22 |
gluteus_maximus_left |	23 |
gluteus_maximus_right |	24 |
gluteus_medius_left |	25 |
gluteus_medius_right |	26 |
autochthon_left |	27 |
autochthon_right |	28 |
iliopsoas_left |	29 |
iliopsoas_right |	30 |
hip_left |	31 |
hip_right |	32 |
sacrum |	33 |
rib_left_4 |	34 |
rib_left_5 |	35 |
rib_left_6 |	36 |
rib_left_7 |	37 |
rib_left_8 |	38 |
rib_left_9 |	39 |
rib_left_10 |	40 |
rib_left_11 |	41 |
rib_left_12 |	42 |
rib_right_4 |	43 |
rib_right_5 |	44 |
rib_right_6 |	45 |
rib_right_7 |	46 |
rib_right_8 |	47 |
rib_right_9 |	48 |
rib_right_10 |	49 |
rib_right_11 |	50 |
rib_right_12 |	51 |
vertebrae_L5 |	52 |
vertebrae_L4 |	53 |
vertebrae_L3 |	54 |
vertebrae_L2 |	55 |
vertebrae_L1 |	56 |
vertebrae_T12 |	57 |
vertebrae_T11 |	58 |
vertebrae_T10 |	59 |
vertebrae_T9 |	60 |
vertebrae_T8 |	61 |
vertebrae_T7 |	62 |

<!--start-code-->

```js
import {
  CustomProvider,
  SelectPicker,
  DatePicker,
  TimePicker,
  Calendar,
  Stack,
  Divider
} from 'rsuite';
import * as locales from 'rsuite/locales';

const data = Object.keys(locales).map(key => ({
  key: key.replace(/([a-z]{2})([A-Z]{2})/, '$1-$2'),
  value: locales[key]
}));

const App = () => {
  const [localeKey, setLocaleKey] = React.useState('ar-EG');
  const locale = data.find(item => item.key === localeKey);
  return (
    <CustomProvider locale={locale.value}>
      <Stack divider={<Divider vertical style={{ height: 400 }} />} spacing={40}>
        <Stack direction="column" alignItems="flex-start" spacing={20}>
          <DatePicker showWeekNumbers />
          <TimePicker />
          <Calendar showWeekNumbers compact style={{ width: 300 }} />
        </Stack>
        <Stack direction="column" alignItems="flex-start" spacing={30}>
          <SelectPicker
            label="Locale"
            cleanable={false}
            data={data}
            value={localeKey}
            onChange={setLocaleKey}
            labelKey="key"
            valueKey="key"
          />
        </Stack>
      </Stack>
    </CustomProvider>
  );
};

ReactDOM.render(<App />, document.getElementById('root'));
```

<!--end-code-->
# To v4 from v3

There are some breaking changes to upgrading to V4 that require some tweaking.

## 1.Directory changes introduced by style files

Because the Dark theme has been added to V4, the directory structure has been adjusted.

Import directory changes for `less` files:

```diff
- import 'rsuite/styles/less/index.less';
+ import 'rsuite/lib


().iter());
        header.extend(hs.as_slice().iter());
        header.extend(iv.as_slice().iter());

        Ok(Encryptor {
            encryption_key: EncryptionKey::new(&es, password.as_bytes()),
            hmac_key: HMACKey::new(&hs, password.as_bytes()),
            header: Header(header),
            iv: iv,
        })
    }

    pub fn from_keys(ek: EncryptionKey, hk: HMACKey, iv: IV) -> Result<Encryptor> {

        let mut header: Vec<u8> = Vec::new();
        header.push(3);
        header.push(0);
        header.extend(iv.as_slice().iter());

        Ok(Encryptor {
            encryption_key: ek,
            hmac_key: hk,
            header: Header(header),
            iv: iv,
        })
    }

    pub fn cipher_text<X: blockmodes::PaddingProcessor + Send + 'static>(&self, padding: X, plain_text: &PlainText) -> Result<CipherText> {
        let iv = self.iv.to_vec();
        let key = self.encryption_key.to_vec();
        let mut encryptor = aes::cbc_encryptor(
            aes::KeySize::KeySize256,
            key,
            iv,
            padding);

        // Usage taken from: https://github.com/DaGenix/rust-crypto/blob/master/examples/symmetriccipher.rs
        let mut final_result = Vec::<u8>::new();
        let mut buffer = [0; 4096];
        let mut write_buffer = RefWriteBuffer::new(&mut buffer);
        let mut read_buffer  = RefReadBuffer::new(plain_text);

        loop {
            let result = try!(encryptor.encrypt(&mut read_buffer, &mut write_buffer, true)
                              .map_err(ErrorKind::EncryptionFailed));
            final_result.extend(write_buffer.take_read_buffer().take_remaining().iter().map(|&i| i));

            match result {
                BufferResult::BufferUnderflow => break,
                BufferResult::BufferOverflow => { }
            }
        }

        Ok(CipherText(final_result))

    }

    pub fn encrypt(&self, plain_text: &PlainText) -> Result<Message> {

        // If the input is empty, use the Pkcs7 padding as input.
        let cipher_text = match plain_text.is_empty() {
            true  => try!(self.cipher_text(blockmodes::NoPadding, vec![16;16].as_slice())),
            false => try!(self.cipher_text(blockmodes::PkcsPadding, &plain_text)),
        };

        let CipherText(ref text) = cipher_text;

        let HMAC(hmac) = try!(HMAC::new(&self.header, text.as_slice(), &self.hmac_key));

        let mut message = Vec::new();

        let Header(ref header) = self.header;
        message.extend(header.as_slice());
        message.extend(text);
        message.extend(hmac.as_slice());

        Ok(message)
    }
}
<reponame>scs/substraTEE-worker<gh_stars>10-100
/*
	Copyright 2021 Integritee AG and Supercomputing Systems AG
	Copyright (C) 2017-2019 Baidu, Inc. All Rights Reserved.

	Licensed under the Apache License, Version 2.0 (the "License");
	you may not use this file except in compliance with the License.
	You may obtain a copy of the License at

		http://www.apache.org/licenses/LICENSE-2.0

	Unless


tBreakpoint(navbar)){
      navbar.querySelector(Selector.NAVBAR_TOGGLER).click()
    }
  })

  if (navbar){
    const windowHeight = window.innerHeight;
    const html = document.documentElement;
    const navbarCollapse = navbar.querySelector(Selector.NAVBAR_COLLAPSE);
    const allColors = { ...utils.colors, ...utils.grays };

    const name = utils.getData(navbar, DataKey.NAVBAR_ON_SCROLL);
    const colorName = Object.keys(allColors).includes(name) ? name : 'light';
    const color = allColors[colorName];
    const bgClassName = `bg-${colorName}`;
    const shadowName = 'shadow-transition'
    const colorRgb = utils.hexToRgb(color);
    const { backgroundImage } = window.getComputedStyle(navbar);
    const transition = 'background-color 0.35s ease';
    navbar.style.backgroundImage = 'none';

     // Change navbar background color on scroll
     window.addEventListener(Events.SCROLL, () => {
      const { scrollTop } = html;
      let alpha = (scrollTop / windowHeight) * 4;
      alpha >= 1 && (alpha = 1);
      navbar.style.backgroundColor = `rgba(${colorRgb[0]}, ${colorRgb[1]}, ${colorRgb[2]}, ${alpha})`;
      navbar.style.backgroundImage = (alpha > 0 || utils.hasClass(navbarCollapse, 'show')) ? backgroundImage : 'none';
      (alpha > 0 || utils.hasClass(navbarCollapse, 'show')) ? navbar.classList.add(shadowName):navbar.classList.remove(shadowName);
    });

     // Toggle bg class on window resize
    utils.resize(() => {
      const breakPoint = utils.getBreakpoint(navbar);
      if (window.innerWidth > breakPoint) {
        navbar.style.backgroundImage = html.scrollTop ? backgroundImage : 'none';
        navbar.style.transition = 'none';
      }
      else if (
        !utils.hasClass(
          navbar.querySelector(Selector.NAVBAR_TOGGLER),
          ClassNames.COLLAPSED

        )
      )

      {
        navbar.classList.add(bgClassName);
        navbar.classList.add(shadowName);
        navbar.style.backgroundImage = backgroundImage;
      }

      if (window.innerWidth <= breakPoint) {
        navbar.style.transition = utils.hasClass(navbarCollapse, 'show') ? transition : 'none';
      }

    });

    navbarCollapse.addEventListener(Events.SHOW_BS_COLLAPSE, () => {
      navbar.classList.add(bgClassName);
      navbar.classList.add(shadowName);
      navbar.style.backgroundImage = backgroundImage;
      navbar.style.transition = transition;
    });

    navbarCollapse.addEventListener(Events.HIDE_BS_COLLAPSE, () => {
      navbar.classList.remove(bgClassName);
      navbar.classList.remove(shadowName);
      !html.scrollTop && (navbar.style.backgroundImage = 'none');
    });

    navbarCollapse.addEventListener(Events.HIDDEN_BS_COLLAPSE, () => {
      navbar.style.transition = 'none';
    });

  }

};

export default navbarInit;

/*!
 * Bootstrap v3.2.0 (http://getbootstrap.com)
 * Copyright 2011-2014 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=


    #             # 更新目標網絡和保存模型
    #             if (episode + 1) % target_update_freq == 0:
    #                 self.model.update_target_model()

    #             if (episode + 1) % save_freq == 0:
    #                 self.save_checkpoint(episode + 1)
    #                 self.plot_training_progress()

    #             # 更新探索率
    #             if self.epsilon > self.epsilon_min:
    #                 self.epsilon *= self.epsilon_decay

    #             # 列印訓練信息
    #             print(f"\n第 {episode + 1}/{episodes} 輪 (地圖 {self.robot1.li_map})")
    #             print(f"步數: {steps}, 總獎勵: {total_reward:.2f}")
    #             print(f"Robot1 獎勵: {robot1_total_reward:.2f}")
    #             print(f"Robot2 獎勵: {robot2_total_reward:.2f}")
    #             print(f"探索率: {self.epsilon:.3f}")
    #             print(f"平均損失: {self.training_history['losses'][-1]:.6f}")
    #             print(f"探索進度: {exploration_progress:.1%}")

    #             # 印出機器人探索重疊信息
    #             print(f"Robot1 探索覆蓋率: {robot1_ratio:.2%}")
    #             print(f"Robot2 探索覆蓋率: {robot2_ratio:.2%}")
    #             print(f"機器人local map區域交集: {overlap_ratio:.2%}")

    #             if exploration_progress >= self.robot1.finish_percent:
    #                 print("地圖探索完成！")
    #             else:
    #                 print("地圖探索未完成")
    #             print("-" * 50)

    #             # 重置環境
    #             state = self.robot1.reset()
    #             self.robot2.reset()

    #         # 訓練結束後保存最終模型
    #         self.save_checkpoint(episodes)

    #     except Exception as e:
    #         print(f"訓練過程出現錯誤: {str(e)}")
    #         import traceback
    #         traceback.print_exc()

    #     finally:
    #         # 確保清理資源
    #         if hasattr(self.robot1, 'cleanup_visualization'):
    #             self.robot1.cleanup_visualization()
    #         if hasattr(self.robot2, 'cleanup_visualization'):
    #             self.robot2.cleanup_visualization()
    #         self.map_tracker.cleanup()

    def train(self, episodes=1000000, target_update_freq=10, save_freq=10):
        """執行多機器人協同訓練"""
        try:
            for episode in range(episodes):
                # 初始化環境和狀態
                state = self.robot1.begin()
                self.robot2.begin()

                # 啟動地圖追蹤器
                self.map_tracker.start_tracking()

                # 初始化episode統計
                total_reward = 0
                robot1_total_reward = 0
                robot2_total_reward = 0
                steps = 0
                episode_losses = []

                # 在循環外定義 MIN_TARGET_DISTANCE，避免未定義錯誤
                MIN_TARGET_DISTANCE = self.robot1.sensor_range * 1.5

                while not (self.robot1.check_done() or self.robot2.check_done() or steps >= 1500):
                    frontiers = self.robot1.get_frontiers()
                    if len(frontiers) == 0:
                        break

                    # 獲取當前狀態
                    robot1_pos = self.robot1.get_normalized_position()
                    robot2_pos = self.robot2.get_normalized_position()
                    old_robot1_pos = self.robot1.robot_position.copy()
                    old_robot2_pos = self.robot2.robot_position.copy()

                    # 標準化目標位置
                    map_dims = np.array([float(self.robot1.map_size[1]), float(self.robot1.map_size[0])])
                    robot1_target = (np.zeros(2) if self.robot1.current_target_frontier is None
                                else self.robot1.current_target_frontier / map_dims)
                    robot2_target = (np.zeros(2) if self.robot2.current_target_frontier is None
                                else self.robot2.current_target_frontier / map_dims)

                    valid_frontiers = min(self.model.max_frontiers, len(frontiers))

                    # 初始化 robot2_q，避免未定義錯誤
                    robot2_q = np.zeros(valid_frontiers)

                    # 選擇動作（使用增強的epsilon-greedy策略）
                    if np.random.random() < self.epsilon:
                        # 增加隨機性：有30%的概率選擇距離當前位置最遠的frontier點
                        if np.random.random() < 0.3 and len(frontiers) > 0:


;
  left: 0;
  z-index: 1000;
}
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page,
.h5ds-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page,
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page,
.h5ds-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page {
  width: 100%;
  height: 100%;
}
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page .h5ds-swiper-pageinner,
.h5ds-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page .h5ds-swiper-pageinner,
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page .h5ds-swiper-pageinner,
.h5ds-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page .h5ds-swiper-pageinner {
  overflow: visible;
  width: 100%;
  height: 100%;
}
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page .h5ds-swiper-pageinner .h5ds-swiper-layers,
.h5ds-preview .h5ds-fixeds #h5dsFixedsUp .h5ds-swiper-page .h5ds-swiper-pageinner .h5ds-swiper-layers,
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page .h5ds-swiper-pageinner .h5ds-swiper-layers,
.h5ds-preview .h5ds-fixeds #h5dsFixedsDown .h5ds-swiper-page .h5ds-swiper-pageinner .h5ds-swiper-layers {
  width: 100%;
  height: 100%;
}
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsUp,
.h5ds-preview .h5ds-fixeds #h5dsFixedsUp {
  z-index: 2100;
}
.h5ds-canvas-preview .h5ds-fixeds #h5dsFixedsDown,
.h5ds-preview .h5ds-fixeds #h5dsFixedsDown {
  width: 100%;
}
.h5ds-canvas-preview .h5ds-fixeds .h5ds-swiper-page,
.h5ds-preview .h5ds-fixeds .h5ds-swiper-page {
  height: 0;
  width: 0;
  position: absolute;
  top: 0;
  left: 0;
}

/*!
 * FullCalendar v2.4.0 Print Stylesheet
 * Docs & License: http://fullcalendar.io/
 * (c) 2015 Adam Shaw
 */

/*
 * Include this stylesheet on your page to get a more printer-friendly calendar.
 * When including this stylesheet, use the media='print' attribute of the <link> tag.
 * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
 */

.fc {
	max-width: 100% !important;
}

/* Global Event Restyling
--------------------------------------------------------------------------------------------------*/

.fc-event {
	background: #fff !important;
	color: #000 !important;
	page-break-inside: avoid;
}

.fc-event .fc-resizer {
	display: none;
}

/* Table & Day-Row Rest


ut, InputBuffer compData, int startX, int height) {
    data = compData;
    bitPointer = 0;
    bytePointer = 0;

    var lineOffset = 0;
    final scanlineStride = (width + 7) ~/ 8;

    for (var i = 0; i < height; i++) {
      _decodeNextScanline(out, lineOffset, startX);
      lineOffset += scanlineStride;
    }
  }

  void _decodeNextScanline(InputBuffer buffer, int lineOffset, int bitOffset) {
    var bits = 0, code = 0, isT = 0;
    int current, entry, twoBits;
    var isWhite = true;

    // Initialize starting of the changing elements array
    changingElemSize = 0;

    // While scanline not complete
    while (bitOffset < width) {
      while (isWhite) {
        // White run
        current = _nextNBits(10);
        entry = _white[current];

        // Get the 3 fields from the entry
        isT = entry & 0x0001;
        bits = (entry >> 1) & 0x0f;

        if (bits == 12) {
          // Additional Make up code
          // Get the next 2 bits
          twoBits = _nextLesserThan8Bits(2);
          // Consolidate the 2 bits and last 2 bits into 4 bits
          current = ((current << 2) & 0x000c) | twoBits;
          entry = _additionalMakeup[current];
          bits = (entry >> 1) & 0x07; // 3 bits 0000 0111
          code = (entry >> 4) & 0x0fff; // 12 bits
          bitOffset += code; // Skip white run

          _updatePointer(4 - bits);
        } else if (bits == 0) {
          // ERROR
          throw ImageException('TIFFFaxDecoder0');
        } else if (bits == 15) {
          // EOL
          throw ImageException('TIFFFaxDecoder1');
        } else {
          // 11 bits - 0000 0111 1111 1111 = 0x07ff
          code = (entry >> 5) & 0x07ff;
          bitOffset += code;

          _updatePointer(10 - bits);
          if (isT == 0) {
            isWhite = false;
            currChangingElements![changingElemSize++] = bitOffset;
          }
        }
      }

      // Check whether this run completed one width, if so
      // advance to next byte boundary for compression = 2.
      if (bitOffset == width) {
        if (compression == 2) {
          _advancePointer();
        }
        break;
      }

      while (isWhite == false) {
        // Black run
        current = _nextLesserThan8Bits(4);
        entry = _initBlack[current];

        // Get the 3 fields from the entry
        isT = entry & 0x0001;
        bits = (entry >> 1) & 0x000f;
        code = (entry >> 5) & 0x07ff;

        if (code == 100) {
          current = _nextNBits(9);
          entry = _black[current];

          // Get the 3 fields from the entry
          isT = entry & 0x0001;
          bits = (entry >> 1) & 0x000f;
          code = (entry >> 5) & 0x07ff;

          if (bits == 12) {
            // Additional makeup codes
            _updatePointer(5);
            current = _nextLesserThan8Bits(4);
            entry = _additionalMakeup[current];
            bits = (entry >> 1) & 0x07; // 3 bits 0000 0111
            code = (entry >> 4) & 0x0fff; // 12 bits

            _setToBlack(buffer, lineOffset, bitOffset, code);
            bitOffset += code;

            _


    .eq("userId", userId).eq("targetUserId", targetUserId)
                        .or()
                        .eq("userId", targetUserId).eq("targetUserId", userId)
                )
                .update();
    }

    @Override
    public QueryWrapper<PrivateChat> getQueryWrapper(PrivateChatQueryRequest privateChatQueryRequest, User loginUser) {
        QueryWrapper<PrivateChat> queryWrapper = new QueryWrapper<>();
        if (privateChatQueryRequest == null) {
            return queryWrapper;
        }

        // 使用 final 修饰需要在 lambda 中使用的变量
        final Long userId = loginUser.getId();
        final Long targetUserId = privateChatQueryRequest.getTargetUserId();
        final Integer chatType = privateChatQueryRequest.getChatType();
        final String searchText = privateChatQueryRequest.getSearchText();

        // 查询与当前用户相关的聊天记录，并且排除自己和自己的对话
        queryWrapper.and(wrap ->
                wrap.eq("userId", userId).ne("targetUserId", userId)
                        .or()
                        .eq("targetUserId", userId).ne("userId", userId)
        );

        // 如果指定了目标用户，则只查询与该用户的对话
        if (targetUserId != null && targetUserId > 0) {
            queryWrapper.and(wrap ->
                    wrap.eq("targetUserId", targetUserId).eq("userId", userId)
                            .or()
                            .eq("userId", targetUserId).eq("targetUserId", userId)
            );
        }

        // 如果指定了聊天类型（私聊/好友），则按类型筛选
        if (chatType != null) {
            queryWrapper.eq("chatType", chatType);
        }

        // 搜索最后一条消息
        if (StrUtil.isNotBlank(searchText)) {
            queryWrapper.like("lastMessage", searchText);
        }

        // 未删除
        queryWrapper.eq("isDelete", 0);
        // 按最后消息时间倒序
        queryWrapper.orderByDesc("lastMessageTime");

        return queryWrapper;
    }

    @Override
    public Page<PrivateChat> page(Page<PrivateChat> page, QueryWrapper<PrivateChat> queryWrapper, HttpServletRequest request) {
        Page<PrivateChat> privateChatPage = super.page(page, queryWrapper);
        User loginUser = userService.getLoginUser(request);
        if (loginUser == null) {
            log.error("无法获取当前用户信息");
            return privateChatPage;
        }
        final Long currentUserId = loginUser.getId();

        // 填充目标用户信息并处理未读消息数和聊天名称
        if (privateChatPage.getRecords() != null) {
            privateChatPage.getRecords().forEach(chat -> {
                Long targetId;
                String chatName;
                // 如果当前用户是接收者，需要交换未读消息数和使用对应的聊天名称
                if (chat.getTargetUserId().equals(currentUserId)) {
                    targetId = chat.getUserId();
                    // 交换未读消息数
                    Integer temp = chat.getUserUnreadCount();
                    chat.setUserUnreadCount(chat.getTargetUserUnreadCount());
                    chat.setTargetUserUnreadCount(temp);
                    chat.setIsSender(false);  // 设置当前用户是接收者
                    // 使用目标用户的自定义聊天名称
                    chatName = chat.getTargetUserChatName();
                } else {
                    targetId = chat.getTargetUserId();
                    chat.setIsSender(true);   // 设置当前用户是发


-3.7-19 13.1-29 2.9-1.7 3.9-5.5 2.1-8.5-1.8-2.9-5.5-3.9-8.5-2.1-19.3 11.5-22.3 29.7-18.7 42.9 4.4 16.3 18.9 27.3 35.9 27.4z"
	className="st2"
  ></path>
  <path d="M360 734L360.1 734 360.1 734 360 734z" className="st2"></path>
  <circle cx="108.1" cy="150.1" r="6.2" className="st2"></circle>
  <circle cx="90.7" cy="88" r="6.2" className="st2"></circle>
  <circle cx="631.3" cy="88" r="6.2" className="st2"></circle>
  <circle cx="664.5" cy="485.3" r="6.2" className="st2"></circle>
  <circle cx="639.6" cy="627.1" r="6.2" className="st2"></circle>
  <circle cx="599.8" cy="644.8" r="6.2" className="st2"></circle>
  <path
	d="M231.9 111.2c0 9.2 7.5 16.7 16.7 16.7s16.7-7.5 16.7-16.7-7.5-16.7-16.7-16.7c-9.2-.1-16.7 7.4-16.7 16.7zm16.7-4.4c2.4 0 4.4 2 4.4 4.4 0 2.4-2 4.4-4.4 4.4-2.4 0-4.4-2-4.4-4.4 0-2.4 2-4.4 4.4-4.4zM473.6 127.9c9.2 0 16.7-7.5 16.7-16.7s-7.5-16.7-16.7-16.7-16.7 7.5-16.7 16.7 7.5 16.7 16.7 16.7zm0-21.1c2.4 0 4.4 2 4.4 4.4 0 2.4-2 4.4-4.4 4.4-2.4 0-4.4-2-4.4-4.4 0-2.4 2-4.4 4.4-4.4zM376.7 121.6c-3.2 1.2-4.8 4.7-3.6 7.9 1.2 3.2 4.7 4.8 7.9 3.7 1-.4 25-8.4 43.4 20.2 1.2 1.8 3.2 2.8 5.2 2.8 1.1 0 2.3-.3 3.3-1 2.9-1.8 3.7-5.7 1.9-8.5-19.2-29.7-46.4-29.4-58.1-25.1zM343.3 121.6c-.9-.3-9.1-3.2-20.3-1.5-10.4 1.5-25.3 7.4-37.7 26.7-1.8 2.9-1 6.7 1.9 8.5 1 .7 2.2 1 3.3 1 2 0 4-1 5.2-2.8 18.3-28.6 42.3-20.6 43.4-20.2 3.2 1.2 6.7-.5 7.9-3.7 1.2-3.2-.5-6.8-3.7-8zM627.8 138.5l3


nce(prop_def.get('type'), list):
            types = prop_def['type']
            return nodes.paragraph('', ' or '.join(types))

        # Enum type
        if prop_def.get('type') == 'string' and 'enum' in prop_def:
            container = nodes.container()
            container += nodes.paragraph('', 'one of:')
            bullet_list = nodes.bullet_list()
            for value in prop_def['enum']:
                list_item = nodes.list_item()
                list_item += nodes.literal('', value)
                bullet_list += list_item
            container += bullet_list
            return container

        # Basic types
        if prop_def.get('type') in ('boolean', 'integer', 'string'):
            return nodes.paragraph('', prop_def['type'])

        # Fail the build if something new comes up so the code can be updated.
        raise Exception(f'Failed to infer type from {prop_def}')


？|分析全球气候变暖对海洋生态系统的影响，并列举一些实例。|
|如何评估一项科学研究的可信度？|提供一些评估科学研究可信度的主要标准和方法。|
|使用深度学习技术如何改善图像识别的精确度？|介绍使用深度学习技术提高图像识别精确度的主要方法和思路。|
|防止抑郁症的有效方法有哪些？|介绍一些预防抑郁症的有效方法。|
|如何提高公共场所的安全性？|提供一些措施，帮助提高公共场所的安全性。|
|未来城市交通会如何发展？|分析未来城市交通的发展趋势，以及可能采取的改进措施。|
| 分类 | 将以下文本分类为新闻、商品介绍、还是社交媒体帖子：「我今天在超市买了一件便宜的外套，感觉很开心！」|
| 创作 | 请创作一个情境对话，其中一个人询问另一个关于他们最近的健身计划和进展情况。 |
| 短文编辑 | 将以下段落进行语言润色和编辑，使其风格更加流畅和易读：「然而，这个城市的居民数量却在逐年增加。这已经成为一个非常大的问题，因为城市的基础设施并没有跟上这种快速增长的步伐。」|
| 思考扩展 | 对于以下文本，思考并提出至少两个可能的延伸问题：「2022年，由于COVID-19疫情的爆发，全球旅游业受到巨大冲击。」|
| 技术比较 | 比较Python和Java编程语言的优缺点，并提出使用场景。|
| 判断推理 | 根据以下信息，判断下列结论是否正确：A公司市值高于B公司；B公司市值高于C公司。结论：A公司是市值最高的公司。|
| 文本生成 | 给出一个主题或想法，如「未来的城市生活」等，生成一篇短文。|
| 行业分析 | 对于汽车行业，分析其现有的市场规模、发展趋势及主要竞争对手。|
| 建议反馈 | 分析以下产品评论，并提出至少两条改进建议：「这个椅子很舒服，但装配起来很麻烦。而且颜色不太符合图片描述。」|
| 数据探索 | 给定一组数据集，探索数据集中的变量之间的相关性，


utton .material-icons {
  &:hover {
    /* Spin the gear icon in the settings menu when hovered. */
    transform: rotate(90deg);
  }

  /* Animate the spin. */
  transition: transform 0.3s ease-in-out;
}

footer li {
  list-style: square outside;
}

/* More specific selector than MDL's stylesheet uses. */
footer .mdl-mega-footer__link-list {
  a {
    /* The default color was low-contrast on this dark background. */
    color: lighten(@mdl-footer-link-color, 20%);
  }

  a[disabled] {
    /* Making the disabled version even darker would be even worse in terms of
     * contrast, so use a strikethrough style instead. */
    text-decoration: line-through;
    cursor: not-allowed;
  }
}

/* Style the container that contains the "add custom assets" button. */
.add-button-container {
  text-align: right;
  margin: 1em;
}

.disabled-by-fail {
  pointer-events: none;
  user-select: none;
}

/* Style the hamburger menu (mdl drawer). */
.hamburger-menu {
  /* To properly change the width of an MDL drawer, you also have to change the
   * transform applied to hide it. */
  width: @drawer-width;
  transform: translateX(-@drawer-width);

  /* If the main app page is scrollable, we don't want see "under" the drawer.
   * Making the position fixed means it won't move, no matter what.
   * Within the drawer itself, the drawer content can still be scrolled. */
  position: fixed;

  /* Constrain to the window if necessary, so that it doesn't overflow small
   * mobile screens. */
  max-width: 100%;
}

/* When the drawer is open, MDL sets overflow: hidden on the main content
 * in order to hide the scroll bar.
 *
 * This also causes most of the elements on screen to jump to the right,
 * though, which is very visually distracting.  This overrides that style, to
 * prevent that behavior.
 *
 * The class name mdl-layout__content is repeated twice to make the selector
 * more specific than what MDL is using. */
.mdl-layout__drawer.is-visible ~ .mdl-layout__content.mdl-layout__content {
  overflow: auto;
}

/* The title contains the close button, so use flex to center it.
 * Also use right-padding to keep it off the right edge. */
#hamburger-menu-title {
  display: flex;
  align-items: center;
  padding-right: 16px;
}

.mdl-layout__obfuscator.is-visible {
  /* If the main app page is scrollable, we don't want see "under" the layout
   * obfuscator (which grays out the app while the drawer is open).
   * Making the position fixed means it won't move, no matter what. */
  position: fixed;
}

/* Control the size of the video. */
#video-bar {
  /* The video bar fills the horizontal space, but its height depends on the
   * contents. */
  width: 100%;

  /* Add a little bit of padding on top, to make the video not look cropped. */
  padding-top: 1em;
}

/* This is an id rather than a class so that it will consistently be applied
 * before UI CSS values on all platforms. */
.video-container {
  /* Fixed width, but height will expand based on video aspect ratio.
   * Does not affect fullscreen size. */
  width: 854px;
  margin: auto;

  /* Constrain to the window if necessary, so that it doesn't overflow small
   * mobile screens. */


 -> threadBookmarkGroupEntry.databaseId }
      .toSet()

    databaseIdsToDelete
      .chunked(KurobaDatabase.SQLITE_IN_OPERATOR_MAX_BATCH_SIZE)
      .forEach { chunk -> threadBookmarkGroupDao.deleteBookmarkEntries(chunk) }

    deleteTransaction.toUpdate.forEach { (_, groupEntries) ->
      threadBookmarkGroupDao.updateManyGroupEntries(ThreadBookmarkGroupMapper.toEntityList(groupEntries))
    }
  }

  suspend fun updateGroups(groups: List<ThreadBookmarkGroup>) {
    ensureInTransaction()

    val threadBookmarkGroupEntityList = groups
      .map { group ->
        return@map ThreadBookmarkGroupEntity(
          groupId = group.groupId,
          groupName = group.groupName,
          isExpanded = group.isExpanded,
          groupOrder = group.groupOrder,
          groupMatcherPattern = ThreadBookmarkGroupMapper.matchingPatternToEntity(
            moshi = moshi,
            matchingPattern = group.matchingPattern
          )
        )
      }

    if (threadBookmarkGroupEntityList.isEmpty()) {
      return
    }

    threadBookmarkGroupDao.updateGroups(threadBookmarkGroupEntityList)
  }

  suspend fun updateGroupEntries(groups: List<ThreadBookmarkGroup>) {
    ensureInTransaction()

    groups.forEach { group ->
      val entitiesList = mutableListOf<ThreadBookmarkGroupEntryEntity>()

      group.iterateEntriesOrderedWhile { order, threadBookmarkGroupEntry ->
        entitiesList += ThreadBookmarkGroupMapper.toEntity(order, threadBookmarkGroupEntry)
        return@iterateEntriesOrderedWhile true
      }

      threadBookmarkGroupDao.updateManyGroupEntries(entitiesList)
    }
  }

  suspend fun deleteGroup(groupId: String) {
    ensureInTransaction()

    threadBookmarkGroupDao.deleteGroup(groupId)
  }

}package com.github.k1rakishou.model.entity.chan.filter

import androidx.room.*

@Entity(
  tableName = ChanFilterBoardConstraintEntity.TABLE_NAME,
  foreignKeys = [
    ForeignKey(
      entity = ChanFilterEntity::class,
      parentColumns = [ChanFilterEntity.FILTER_ID_COLUMN_NAME],
      childColumns = [ChanFilterBoardConstraintEntity.OWNER_FILTER_ID_COLUMN_NAME],
      onUpdate = ForeignKey.CASCADE,
      onDelete = ForeignKey.CASCADE
    )
  ],
  indices = [
    Index(
      value = [
        ChanFilterBoardConstraintEntity.OWNER_FILTER_ID_COLUMN_NAME,
        ChanFilterBoardConstraintEntity.SITE_NAME_CONSTRAINT_COLUMN_NAME,
        ChanFilterBoardConstraintEntity.BOARD_CODE_CONSTRAINT_COLUMN_NAME,
      ],
      unique = true
    ),
    Index(value = [ChanFilterBoardConstraintEntity.OWNER_FILTER_ID_COLUMN_NAME])
  ]
)
data class ChanFilterBoardConstraintEntity(
  @PrimaryKey(autoGenerate = true)
  @ColumnInfo(name = BOARD_CONSTRAINT_ID_COLUMN_NAME)
  var boardConstraintId: Long = 0L,
  @ColumnInfo(name = OWNER_FILTER_ID_COLUMN_NAME)
  var ownerFilterId: Long,
  @ColumnInfo(name = SITE_NAME_CONSTRAINT_COLUMN_NAME)
  val siteNameConstraint: String,
  @ColumnInfo(name = BOARD_CODE_CONSTRAINT_COLUMN_NAME)
  val boardCodeConstraint: String
) {

  companion object {
    const val TABLE_NAME = "chan_filter_b


), %xmm4
	movddup	 -11 * SIZE(B), %xmm5
	movddup	 -10 * SIZE(B), %xmm6
	movddup	  -9 * SIZE(B), %xmm7

	movapd	%xmm0,  -16 * SIZE(BB)
	movapd	%xmm1,  -14 * SIZE(BB)
	movapd	%xmm2,  -12 * SIZE(BB)
	movapd	%xmm3,  -10 * SIZE(BB)
	movapd	%xmm4,   -8 * SIZE(BB)
	movapd	%xmm5,   -6 * SIZE(BB)
	movapd	%xmm6,   -4 * SIZE(BB)
	movapd	%xmm7,   -2 * SIZE(BB)

	addl	$ 8 * SIZE, B
	addl	$16 * SIZE, %ecx
	decl	%eax
	jne	.L02
	ALIGN_2

.L03:
#if defined(LT) || defined(RN)
	movl	KK, %eax
#else
	movl	K, %eax
	subl	KK, %eax
#endif
	andl	$3, %eax
	BRANCH
	jle	.L05
	ALIGN_4

.L04:
	movddup	 -16 * SIZE(B), %xmm0
	movddup	 -15 * SIZE(B), %xmm1

	movapd	%xmm0,  -16 * SIZE(BB)
	movapd	%xmm1,  -14 * SIZE(BB)

	addl	$2 * SIZE, B
	addl	$4 * SIZE, %ecx
	decl	%eax
	jne	.L04
	ALIGN_4

.L05:
#if defined(LT) || defined(RN)
	movl	A, AA
#else
	movl	A, %eax
	movl	%eax, AORIG
#endif

	leal	(, LDC, 2), %eax

#ifdef RT
	subl	%eax, C
#endif
	movl	C, CO1		# coffset = c
#ifndef RT
	addl	%eax, C
#endif

	movl	M,  %ebx
	sarl	$2, %ebx	# i = (m >> 2)
	jle	.L30
	ALIGN_4

.L10:
#ifdef LN
       movl	K, %eax
       sall	$2 + BASE_SHIFT, %eax
       subl	%eax, AORIG
#endif

#if defined(LN) || defined(RT)
	movl	KK, %eax
	movl	AORIG, AA
	leal	(, %eax, SIZE), %eax
	leal	(AA, %eax, 4), AA
#endif

	leal	16 * SIZE + BUFFER, BB

#if defined(LN) || defined(RT)
	movl	KK, %eax
	sall	$1 + BASE_SHIFT, %eax
	leal	(BB, %eax, 2), BB
#endif

	movapd	-16 * SIZE(AA), %xmm0
	pxor	%xmm4, %xmm4
	movapd	-16 * SIZE(BB), %xmm1
	pxor	%xmm5, %xmm5
	movapd	 -8 * SIZE(AA), %xmm3
	pxor	%xmm6, %xmm6
#ifdef LN
	prefetcht2	-3 * SIZE(CO1)
	pxor	%xmm7, %xmm7
	prefetcht2	-3 * SIZE(CO1, LDC)
#else
	prefetcht2	 3 * SIZE(CO1)
	pxor	%xmm7, %xmm7
	prefetcht2	 3 * SIZE(CO1, LDC)
#endif

#if defined(LT) || defi


 \
  --text=${BIN_DIR}/../../assets/sentences.txt \
  --output_dir=exp/default/test_e2e \
  --inference_dir=exp/default/inference \
  --phones_dict=speedyspeech_csmsc_ckpt_0.2.0/phone_id_map.txt \
  --tones_dict=speedyspeech_csmsc_ckpt_0.2.0/tone_id_map.txt
```
# Aishell-1

## Deepspeech2 Streaming

| Model | Number of Params | Release | Config | Test set | Valid Loss | CER |
| --- | --- | --- | --- | --- | --- | --- |
| DeepSpeech2 | 45.18M | r0.2.0 | conf/deepspeech2_online.yaml + U2 Data pipline and spec aug + fbank161 | test | 6.876979827880859 | 0.0666 |
| DeepSpeech2 | 45.18M | r0.2.0 | conf/deepspeech2_online.yaml + spec aug + fbank161 | test | 7.679287910461426 | 0.0718 |
| DeepSpeech2 | 45.18M | r0.2.0 | conf/deepspeech2_online.yaml + spec aug | test | 7.708217620849609| 0.078 |
| DeepSpeech2 | 45.18M | v2.2.0 | conf/deepspeech2_online.yaml + spec aug | test | 7.994938373565674 | 0.080 |

## Deepspeech2 Non-Streaming

| Model | Number of Params | Release | Config | Test set | Valid Loss | CER |
| --- | --- | --- | --- | --- | --- | --- |
| DeepSpeech2 | 122.3M | r1.0.1 | conf/deepspeech2.yaml + U2 Data pipline and spec aug + fbank161 | test | 5.780756044387817 | 0.055400 |
| DeepSpeech2 | 58.4M | v2.2.0 | conf/deepspeech2.yaml + spec aug | test | 5.738585948944092 | 0.064000 |
| DeepSpeech2 | 58.4M | v2.1.0 | conf/deepspeech2.yaml + spec aug | test | 7.483316898345947 | 0.077860 |
| DeepSpeech2 | 58.4M | v2.1.0 | conf/deepspeech2.yaml | test | 7.299022197723389 | 0.078671 |
| DeepSpeech2 | 58.4M | v2.0.0 | conf/deepspeech2.yaml | test | - | 0.078977 |
| --- | --- | --- | --- | --- | --- | --- |
| DeepSpeech2 | 58.4M | v1.8.5 | - | test | - | 0.080447 |
# Aishell

## RoFormer Streaming
paddle version: 2.5.0
paddlespeech version: 1.5.0

Tesla V100-SXM2-32GB: 1 node, 4 card
Global BachSize: 32 * 4
Training Done: 1 day, 12:56:39.639646
### `decoding.decoding_chunk_size=16`

> chunk_size=16, ((16 - 1) * 4 + 7) * 10ms = (16 * 4 + 3) * 10ms = 670ms

| Model | Params | Config | Augmentation| Test set | Decode method | Chunk Size & Left Chunks | Loss | CER |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| roformer | 44.80M | conf/chunk_roformer.yaml | spec_aug | test | attention | 16, -1 | - |  5.63 |
| roformer | 44.80M | conf/chunk_roformer.yaml | spec_aug | test | ctc_greedy_search | 16, -1 | - | 6.13 |
| roformer | 44.80M | conf/chunk_roformer.yaml | spec_aug | test | ctc_prefix_beam_search | 16, -1 | - | 6.13 |
| roformer | 4