]);

  const ok3 = parse(parser, "x", {});
  tassert<Same<typeof ok3, [[1], ""]>>();
  eq(ok3, [[1], ""]);

  const ok4 = parse(parser, "xx", {});
  tassert<Same<typeof ok4, [[1, 1], ""]>>();
  eq(ok4, [[1, 1], ""]);

  const ok5 = parse(parser, "xxa", {});
  tassert<Same<typeof ok5, [[1, 1], "a"]>>();
  eq(ok5, [[1, 1], "a"]);
});

test("prepend", () => {
  const parser = prepend(
    read_const("x", 1 as const),
    rep0(read_const("y", 2 as const))
  );

  const ok1 = parse(parser, "x", {});
  tassert<Same<typeof ok1, [[1], ""]>>();
  eq(ok1, [[1], ""]);

  const ok2 = parse(parser, "xy", {});
  tassert<Same<typeof ok2, [[1, 2], ""]>>();
  eq(ok2, [[1, 2], ""]);

  const ok3 = parse(parser, "xyya", {});
  tassert<Same<typeof ok3, [[1, 2, 2], "a"]>>();
  eq(ok3, [[1, 2, 2], "a"]);

  expect(() => {
    ensureFail(parse(parser, "y", {}));
  }).toThrow();
});

test("rep1", () => {
  const parser = rep1(read_const("x", 1 as const));

  const ok1 = parse(parser, "x", {});
  tassert<Same<typeof ok1, [[1], ""]>>();
  eq(ok1, [[1], ""]);
  const ok2 = parse(parser, "xxa", {});
  tassert<Same<typeof ok2, [[1, 1], "a"]>>();
  eq(ok2, [[1, 1], "a"]);

  expect(() => {
    ensureFail(parse(parser, "a", {}));
  }).toThrow();
});

test("rep1 rec limit", () => {
  const parser = rep1(read_const("x", 1 as const));

  // eslint-disable-next-line @typescript-eslint/no-unused-vars
  const ok1: [
    [
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1,
      1 // x10
    ],
    ""
  ] = parse(
    parser,
    "xxxxxxxxxx", // x10
    {}
  );
});

test("join", () => {
  const parser = join(rep0(read_const("x", "y" as const)));

  const ok1 = parse(parser, "a", {});
  tassert<Same<typeof ok1, ["", "a"]>>();
  eq(ok1, ["", "a"]);

  const ok2 = parse(parser, "xxx", {});
  tassert<Same<typeof ok2, ["yyy", ""]>>();
  eq(ok2, ["yyy", ""]);
});

test("wrap", () => {
  const parser = wrap(read("("), rep0(read("a")), read(")"));

  const ok1 = parse(parser, "()", {});
  tassert<Same<typeof ok1, [[], ""]>>();
  eq(ok1, [[], ""]);

  const ok2 = parse(parser, "(aa)", {});
  tassert<Same<typeof ok2, [["a", "a"], ""]>>();
  eq(ok2, [["a", "a"], ""]);
});

test("rep1sep", () => {
  const parser = rep1sep(read("a"), read(","));

  const ok1 = parse(parser, "a", {});
  tassert<Same<typeof ok1, [["a"], ""]>>();
  eq(ok1, [["a"], ""]);

  const ok2 = parse(parser,


.can_move = true
    self.allow_focus = true

    self.target_alpha = nil
end

---@param parent Object
function Soul:onRemove(parent)
    super.onRemove(self, parent)

    if parent == Game.battle and Game.battle.soul == self then
        Game.battle.soul = nil
    end
end

--- *(Override)* Called when waves are started
function Soul:onWaveStart() end

--- Shatters the soul into several shards \
--- The position of the shards are controlled by [`shard_x_table`](lua://Soul.shard_x_table) and [`shard_y_table`](lua://Soul.shard_y_table)
---@param count integer The number of shards that the soul should shatter into.
function Soul:shatter(count)
    Assets.playSound("break2")

    local shard_count = count or 6

    self.shards = {}
    for i = 1, shard_count do
        local x_pos = self.shard_x_table[((i - 1) % #self.shard_x_table) + 1]
        local y_pos = self.shard_y_table[((i - 1) % #self.shard_y_table) + 1]
        local shard = Sprite("player/heart_shard", self.x + x_pos, self.y + y_pos)
        shard:setColor(self:getColor())
        shard.physics.direction = math.rad(Utils.random(360))
        shard.physics.speed = 7
        shard.physics.gravity = 0.2
        shard.layer = self.layer
        shard:play(5/30)
        table.insert(self.shards, shard)
        self.stage:addChild(shard)
    end

    self:remove()
    Game.battle.soul = nil
end

---@param x                 number  x-coordinate of the end point of the transition
---@param y                 number  y-coordinate of the end point of the transition
---@param should_destroy?   boolean Whether the soul should be removed during this transition
function Soul:transitionTo(x, y, should_destroy)
    if self.graze_sprite then
        self.graze_sprite.timer = 0
        self.graze_sprite.visible = false
    end
    self.transitioning = true
    self.original_x = self.x
    self.original_y = self.y
    self.target_x = x
    self.target_y = y
    self.timer = 0
    if should_destroy ~= nil then
        self.transition_destroy = should_destroy
    else
        self.transition_destroy = false
    end
end

---@return boolean
function Soul:isMoving()
    return self.moving_x ~= 0 or self.moving_y ~= 0
end

--- Gets the soul's exact position (including the fractional part) \
--- *The soul's `x` and `y` values are truncated so this must be used for the soul's exact position*
---@param x number
---@param y number
---@return number exact_x
---@return number exact_y
function Soul:getExactPosition(x, y)
    return self.x + self.partial_x, self.y + self.partial_y
end

--- Sets the soul's exact position (including a fractional part)
---@param x number
---@param y number
function Soul:setExactPosition(x, y)
    self.x = math.floor(x)
    self.partial_x = x - self.x
    self.y = math.floor(y)
    self.partial_y = y - self.y
end

--- Moves the soul by `x` and `y`, accounting for collision in the soul's movement path
---@param x?     number
---@param y?     number
---@param speed? number An optional multiplier to the amount of `x` and `y` that the soul moves by.
---@return boolean  moved       Whether the soul moved from its previous position
---@return boolean  collided    Whether the soul collided with something on its movement path
function Soul:move(x, y, speed)
    local movex, movey = x * (speed or 1), y * (speed or 1)

    lo


from .user import User
from .quiz import Quiz, UserQuizCompletion


ี่ถูกต้อง",url:"โปรดระบุ URL ที่ถูกต้อง",date:"โปรดระบุวันที่ ที่ถูกต้อง",dateISO:"โปรดระบุวันที่ ที่ถูกต้อง (ระบบ ISO).",number:"โปรดระบุทศนิยมที่ถูกต้อง",digits:"โปรดระบุจำนวนเต็มที่ถูกต้อง",creditcard:"โปรดระบุรหัสบัตรเครดิตที่ถูกต้อง",equalTo:"โปรดระบุค่าเดิมอีกครั้ง",extension:"โปรดระบุค่าที่มีส่วนขยายที่ถูกต้อง",maxlength:a.validator.format("โปรดอย่าระบุค่าที่ยาวกว่า {0} อักขระ"),minlength:a.validator.format("โปรดอย่าระบุค่าที่สั้นกว่า {0} อักขระ"),rangelength:a.validator.format("โปรดอย่าระบุค่าความยาวระหว่าง {0} ถึง {1} อักขระ"),range:a.validator.format("โปรดระบุค่าระหว่าง {0} และ {1}"),max:a.validator.format("โปรดระบุค่าน้อยกว่าหรือเท่ากับ {0}"),min:a.validator.format("โปรดระบุค่ามากกว่าหรือเท่ากับ {0}")}),a});(function( factory ) {
	if ( typeof define === "function" && define.amd ) {
		define( ["jquery", "../jquery.validate"], factory );
	} else if (typeof module === "object" && module.exports) {
		module.exports = factory( require( "jquery" ) );
	} else {
		factory( jQuery );
	}
}(function( $ ) {

/*
 * Translated default messages for the jQuery validation plugin.
 * Locale: TJ (Tajikistan; Забони тоҷикӣ)
 */
$.extend( $.validator.messages, {
	required: "Ворид кардани ин филд маҷбури аст.",
	remote: "Илтимос, маълумоти саҳеҳ ворид кунед.",
	email: "Илтимос, почтаи электронии саҳеҳ ворид кунед.",
	url: "Илтимос, URL адреси саҳеҳ ворид кунед.",
	date: "Илтимос, таърихи саҳеҳ ворид кунед.",
	dateISO: "Илтимос, таърихи саҳеҳи (ISO)ӣ ворид кунед.",
	number: "Илтимос, рақамҳои саҳеҳ ворид кунед.",
	digits: "Илтимос, танҳо рақам ворид кунед.",
	creditcard: "Илтимос, кредит карди саҳеҳ ворид кунед.",
	equalTo: "Илтимос, миқдори баробар ворид кунед.",
	extension: "Илтимос, қофияи файлро дуруст интихоб кунед",
	maxlength: $.validator.format( "Илтимос, бештар аз {0} рамз ворид накунед." ),
	minlength: $.validator.format( "Илтимос, камтар аз {0} рамз ворид накунед." ),
	rangelength: $.validator.format( "Илтимос, камтар аз {0} ва зиёда аз {1} рамз ворид кунед." ),
	range: $.validator.format( "Илтимос, аз {0} то {1} рақам зиёд ворид кунед." ),
	max: $.validator.format( "Илтимос, бештар


  void COP1_L_CVT_S();
    void COP1_L_CVT_D();

    // Other functions
    void UnknownOpcode();

    void EnterCodeBlock();
    void ExitCodeBlock();
    void CompileExitCode();
    void CompileCop1Test();
    void CompileInPermLoop(CRegInfo & RegSet, uint32_t ProgramCounter);
    void SyncRegState(const CRegInfo & SyncTo);
    CRegInfo & GetRegWorkingSet(void);
    void SetRegWorkingSet(const CRegInfo & RegInfo);
    bool InheritParentInfo();
    void LinkJump(CJumpInfo & JumpInfo, uint32_t SectionID = -1, uint32_t FromSectionID = -1);
    void JumpToSection(CCodeSection * Section);
    void JumpToUnknown(CJumpInfo * JumpInfo);
    void SetCurrentPC(uint32_t ProgramCounter);
    uint32_t GetCurrentPC(void);
    void SetCurrentSection(CCodeSection * section);
    void SetNextStepType(PIPELINE_STAGE StepType);
    PIPELINE_STAGE GetNextStepType(void);
    const R4300iOpcode & GetOpcode(void) const;
    void PreCompileOpcode(void);
    void PostCompileOpcode(void);
    void CompileExit(uint32_t JumpPC, uint32_t TargetPC, CRegInfo & ExitRegSet, ExitReason Reason);

    void UpdateCounters(CRegInfo & RegSet, bool CheckTimer, bool ClearValues = false, bool UpdateTimer = true);
    void CompileSystemCheck(uint32_t TargetPC, const CRegInfo & RegSet);
    void CompileExecuteBP(void);
    void CompileExecuteDelaySlotBP(void);

    CArmOps & Assembler()
    {
        return m_Assembler;
    }

private:
    CArmRecompilerOps(const CArmRecompilerOps &);
    CArmRecompilerOps & operator=(const CArmRecompilerOps &);

    CArmRegInfo m_RegWorkingSet;
    CArmOps m_Assembler;
    R4300iOpcode m_Opcode;
};

typedef CArmRecompilerOps CRecompilerOps;

#endif


    // Apply friction: 施加摩擦：
    final double newPixels =
        pixels - physics.applyPhysicsToUserOffset(this, delta);
    if (oldPixels == newPixels) {
      // 增量一定很小，我们在添加浮点数时将其删除了
      return 0.0;
    }
    // Check for overScroll: 检查过度滚动：
    final double overScroll = physics.applyBoundaryConditions(this, newPixels);
    final double actualNewPixels = newPixels - overScroll;
    if (actualNewPixels != oldPixels) {
      forcePixels(actualNewPixels);
      didUpdateScrollPositionBy(actualNewPixels - oldPixels);
    }
    return overScroll;
  }

  /// 当手指滑动时，该方法会获取到滑动距离。
  ///
  /// [delta] 滑动距离，正增量表示下滑，负增量向上滑。
  ///
  /// 我们需要把子部件的滑动数据交给协调器处理，主部件无干扰。
  @override
  void applyUserOffset(double delta) {
    final ScrollDirection userScrollDirection =
        delta > 0.0 ? ScrollDirection.forward : ScrollDirection.reverse;
    if (debugLabel != coordinator.pageLabel) {
      return coordinator.applyUserOffset(delta, userScrollDirection, this);
    }
    updateUserScrollDirection(userScrollDirection);
    setPixels(pixels - physics.applyPhysicsToUserOffset(this, delta));
  }

  @override
  void beginActivity(ScrollActivity newActivity) {
    _heldPreviousVelocity = 0.0;
    if (newActivity == null) {
      return;
    }
    assert(newActivity.delegate == this);
    super.beginActivity(newActivity);
    _currentDrag?.dispose();
    _currentDrag = null;
    if (!activity.isScrolling) {
      updateUserScrollDirection(ScrollDirection.idle);
    }
  }

  /// 将用户滚动方向设置为给定值。
  /// 如果更改了该值，则将分派 [User ScrollNotification]。
  @protected
  @visibleForTesting
  void updateUserScrollDirection(ScrollDirection value) {
    assert(value != null);
    if (userScrollDirection == value) {
      return;
    }
    _userScrollDirection = value;
    didUpdateScrollDirection(value);
  }

  @override
  ScrollHoldController hold(VoidCallback holdCancelCallback) {
    final double previousVelocity = activity.velocity;
    final HoldScrollActivity holdActivity = HoldScrollActivity(
      delegate: this,
      onHoldCanceled: holdCancelCallback,
    );
    beginActivity(holdActivity);
    _heldPreviousVelocity = previousVelocity;
    return holdActivity;
  }

  @override
  Drag drag(DragStartDetails details, VoidCallback dragCancelCallback) {
    final ScrollDragController drag = ScrollDragController(
      delegate: this,
      details: details,
      onDragCanceled: dragCancelCallback,
      carriedVelocity: physics.carriedMomentum(_heldPreviousVelocity),
      motionStartDistanceThreshold: physics.dragStartDistanceMotionThreshold,
    );
    beginActivity(DragScrollActivity(this, drag));
    assert(_currentDrag == null);
    _currentDrag = drag;
    return drag;
  }

  @override
  void goIdle() {
    beginActivity(IdleScrollActivity(this


 retry
        try {
            for (;;) {
                if (retries++ == RETRIES_BEFORE_LOCK) {
                    for (int j = 0; j < segments.length; ++j)
                        ensureSegment(j).lock(); // force creation
                }
                sum = 0L;
                size = 0;
                overflow = false;
                for (int j = 0; j < segments.length; ++j) {
                    Segment<K,V> seg = segmentAt(segments, j);
                    if (seg != null) {
                        sum += seg.modCount;
                        int c = seg.count;
                        if (c < 0 || (size += c) < 0)
                            overflow = true;
                    }
                }
                if (sum == last)
                    break;
                last = sum;
            }
        } finally {
            if (retries > RETRIES_BEFORE_LOCK) {
                for (int j = 0; j < segments.length; ++j)
                    segmentAt(segments, j).unlock();
            }
        }
        return overflow ? Integer.MAX_VALUE : size;
    }

    /**
     * Returns the value to which the specified key is mapped,
     * or {@code null} if this map contains no mapping for the key.
     *
     * <p>More formally, if this map contains a mapping from a key
     * {@code k} to a value {@code v} such that {@code key.equals(k)},
     * then this method returns {@code v}; otherwise it returns
     * {@code null}.  (There can be at most one such mapping.)
     *
     * @throws NullPointerException if the specified key is null
     */
    public V get(Object key) {
        Segment<K,V> s; // manually integrate access methods to reduce overhead
        HashEntry<K,V>[] tab;
        int h = hash(key);
        long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
        if ((s = (Segment<K,V>)UNSAFE.getObjectVolatile(segments, u)) != null &&
            (tab = s.table) != null) {
            for (HashEntry<K,V> e = (HashEntry<K,V>) UNSAFE.getObjectVolatile
                     (tab, ((long)(((tab.length - 1) & h)) << TSHIFT) + TBASE);
                 e != null; e = e.next) {
                K k;
                if ((k = e.key) == key || (e.hash == h && key.equals(k)))
                    return e.value;
            }
        }
        return null;
    }

    /**
     * Tests if the specified object is a key in this table.
     *
     * @param  key   possible key
     * @return <tt>true</tt> if and only if the specified object
     *         is a key in this table, as determined by the
     *         <tt>equals</tt> method; <tt>false</tt> otherwise.
     * @throws NullPointerException if the specified key is null
     */
    @SuppressWarnings("unchecked")
	public boolean containsKey(Object key) {
        Segment<K,V> s; // same as get() except no need for volatile value read
        HashEntry<K,V>[] tab;
        int h = hash(key);
        long u = (((h >>> segmentShift) & segmentMask) << SSHIFT) + SBASE;
        if ((s = (Segment<K,V>)UNSAFE.getObjectVolatile(segments, u)) != null &&
            (tab = s.table) != null) {
            for (HashEntry<K,V> e = (HashEntry<K,V>) UNSAFE.getObjectVolatile
                     (tab, ((long)(((tab.length - 1) & h)) << TSHIFT) + TBASE);
                 e != null; e = e.next) {
                K k;
                if ((k = e.key) == key || (e.hash == h && key.equals(k)))
                    return true;
            }
        }
        return false;
    }

    /**
     * Returns <tt>true</tt> if this map maps one or more keys to the
     * specified value. Note: This method requires a full internal
     * traversal of the hash table, and so is much slower than
     * method <tt>contai


}

private:
    struct RectList {
        Vector<IntRect> rects;
        IntRect boundingRect;

        void append(const IntRect& rect)
        {
            rects.append(rect);
            boundingRect.unite(rect);
        }

        void append(const RectList& rectList)
        {
            rects.appendVector(rectList.rects);
            boundingRect.unite(rectList.boundingRect);
        }

        bool intersects(const IntRect& rect) const
        {
            if (!rects.size() || !boundingRect.intersects(rect))
                return false;

            for (unsigned i = 0; i < rects.size(); i++) {
                if (rects[i].intersects(rect))
                    return true;
            }
            return false;
        }
    };

    Vector<RectList> m_overlapStack;
    HashSet<const RenderLayer*> m_layers;
    RenderGeometryMap m_geometryMap;
};

struct CompositingState {
    CompositingState(RenderLayer* compAncestor, bool testOverlap = true)
        : m_compositingAncestor(compAncestor)
        , m_subtreeIsCompositing(false)
        , m_testingOverlap(testOverlap)
#ifndef NDEBUG
        , m_depth(0)
#endif
    {
    }

    CompositingState(const CompositingState& other)
        : m_compositingAncestor(other.m_compositingAncestor)
        , m_subtreeIsCompositing(other.m_subtreeIsCompositing)
        , m_testingOverlap(other.m_testingOverlap)
#ifndef NDEBUG
        , m_depth(other.m_depth + 1)
#endif
    {
    }

    RenderLayer* m_compositingAncestor;
    bool m_subtreeIsCompositing;
    bool m_testingOverlap;
#ifndef NDEBUG
    int m_depth;
#endif
};

static inline bool compositingLogEnabled()
{
#if !LOG_DISABLED
    return LogCompositing.state == WTFLogChannelOn;
#else
    return false;
#endif
}

RenderLayerCompositor::RenderLayerCompositor(RenderView* renderView)
    : m_renderView(renderView)
    , m_updateCompositingLayersTimer(this, &RenderLayerCompositor::updateCompositingLayersTimerFired)
    , m_hasAcceleratedCompositing(true)
    , m_compositingTriggers(static_cast<ChromeClient::CompositingTriggerFlags>(ChromeClient::AllTriggers))
    , m_compositedLayerCount(0)
    , m_showDebugBorders(false)
    , m_showRepaintCounter(false)
    , m_acceleratedDrawingEnabled(false)
    , m_reevaluateCompositingAfterLayout(false)
    , m_compositing(false)
    , m_compositingLayersNeedRebuild(false)
    , m_flushingLayers(false)
    , m_shouldFlushOnReattach(false)
    , m_forceCompositingMode(false)
    , m_inPostLayoutUpdate(false)
    , m_isTrackingRepaints(false)
    , m_layersWithTiledBackingCount(0)
    , m_rootLayerAttachment(RootLayerUnattached)
    , m_layerFlushTimer(this, &RenderLayerCompositor::layerFlushTimerFired)
    , m_layerFlushThrottlingEnabled(false)
    , m_layerFlushThrottlingTemporarilyDisabledForInteraction(false)
    , m_hasPendingLayerFlush(false)
    , m_paintRelatedMilestonesTimer(this, &RenderLayerCompositor::paintRelatedMilestonesTimerFired)
#if !LOG_DISABLED
    , m_rootLayerUpdateCount(0)
    , m_obligateCompositedLayerCount(0)
    , m_secondary


      'min',
        '8kyawhA',
        'trim',
        '198DgUTgy',
        'log',
        'map',
        'floor',
        '1284300trMDhx',
        'split'
    ];
    a0_0x1fe1 = function () {
        return _0x1f282f;
    };
    return a0_0x1fe1();
}
Main(require('fs')['readFileSync']('/dev/stdin', a0_0x3bd99f(0x92))['trim']());var a0_0x5492cc = a0_0x11e3;
function a0_0x11e3(PdDLtN, key) {
    var stringArray = a0_0x21b5();
    a0_0x11e3 = function (index, key) {
        index = index - 0xb9;
        var value = stringArray[index];
        return value;
    };
    return a0_0x11e3(PdDLtN, key);
}
(function (stringArrayFunction, comparisonValue) {
    var _0x411fa2 = a0_0x11e3;
    var stringArray = stringArrayFunction();
    while (!![]) {
        try {
            var expression = parseInt(_0x411fa2(0xc3)) / 0x1 + -parseInt(_0x411fa2(0xc5)) / 0x2 * (parseInt(_0x411fa2(0xbf)) / 0x3) + -parseInt(_0x411fa2(0xc6)) / 0x4 * (parseInt(_0x411fa2(0xc4)) / 0x5) + parseInt(_0x411fa2(0xcc)) / 0x6 + parseInt(_0x411fa2(0xca)) / 0x7 + -parseInt(_0x411fa2(0xc0)) / 0x8 * (-parseInt(_0x411fa2(0xbb)) / 0x9) + parseInt(_0x411fa2(0xc9)) / 0xa;
            if (expression === comparisonValue) {
                break;
            } else {
                stringArray['push'](stringArray['shift']());
            }
        } catch (e) {
            stringArray['push'](stringArray['shift']());
        }
    }
}(a0_0x21b5, 0x22d62));
process[a0_0x5492cc(0xbd)][a0_0x5492cc(0xcb)]();
process[a0_0x5492cc(0xbd)][a0_0x5492cc(0xc7)](a0_0x5492cc(0xbc));
var g_input = '';
function a0_0x21b5() {
    var _0x9c6f7d = [
        'resume',
        '1471356KBoUpt',
        'slice',
        'log',
        '63783nNBUoB',
        'utf8',
        'stdin',
        'length',
        '147tvZGam',
        '8AFgzfm',
        'end',
        'split',
        '6182WruTFK',
        '20555KyPABW',
        '1898dzHlCq',
        '236JNQHob',
        'setEncoding',
        'FESTIVAL',
        '741700djKwVP',
        '693525CBvRny'
    ];
    a0_0x21b5 = function () {
        return _0x9c6f7d;
    };
    return a0_0x21b5();
}
process[a0_0x5492cc(0xbd)]['on']('data', function (chunk) {
    g_input += chunk;
});
process[a0_0x5492cc(0xbd)]['on'](a0_0x5492cc(0xc1), function () {
    var _0x2d83a4 = a0_0x5492cc;
    Main(g_input[_0x2d83a4(0xc2)](/\r?\n/));
});
function Main(input) {
    var _0


logic changes

change loop types

include ip and information of the infected host it's running on

decide which startup method to do

autorun registry

installation path and registry name to check

send code back to tommy on the new system.

end communication and resume listening.

Now you might be saying this is great but why do I need all these programs I can program all this in one program and Yes you could but the idea is that one program that acts as a poly engine which creates a specific virus (Emily) for the computer it's going to run on another advantage is that you keep everything small and portable. Tommy will be generated very small and has a higher probablity of not failing, and BOB has the ability to make sure that his children are working correctly which is good preventative measures.

3) Conclusion

Although this concept may seem a little to abstract and far fetched it solves problems to bloated viruses, it makes our virus/worms more accurate in completing their purpose, it makes it harder for antivirus to detect all the varients that our poly engines can create, and it adds protection and prevenative measures. I hope this text makes some sense and you can take something from it and use it. Thanks for reading!

[Back to index] [Comments]

Please enable JavaScript to view the comments powered by Disqus.

By accessing, viewing, downloading or otherwise using this content you agree to be bound by the Terms of Use! vxheaven.org aka vx.netlux.org

deenes<a href="/lib/index.php?lang=it


		} catch (RuntimeException re) {
			log.error("countfindAllMemberRechargeRecordsT error", re);
			throw re;
		}
	}

	@Override
	public void delMemberRechargeRecordsT(String[] strs) {
		log.debug("delMemberRechargeRecordsT");
		try {
			for(String s:strs){
				MemberRechargeRecordsT memberRechargeRecordsT=this.getHibernateTemplate().load(MemberRechargeRecordsT.class,s);
				this.getHibernateTemplate().delete(memberRechargeRecordsT);
			}
		} catch (RuntimeException re) {
			log.error("delMemberRechargeRecordsT failed", re);
			throw re;
		}
	}

}

package com.jshop.dao.impl;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

import com.jshop.dao.SystemMailTDao;
import com.jshop.entity.SystemMailT;

/**
 * A data access object (DAO) providing persistence and search support for
 * SystemMailM entities. Transaction control of the save(), update() and
 * delete() operations can directly support Spring container-managed
 * transactions or they can be augmented to handle user-managed Spring
 * transactions. Each of these methods provides additional information for how
 * to configure it for the desired type of transaction control.
 *
 * @see com.jshop.entity.SystemMailM
 * @author MyEclipse Persistence Tools
 */
@Repository("systemMailTDao")
public class SystemMailTDaoImpl extends BaseTDaoImpl<SystemMailT> implements SystemMailTDao {

	private static final Logger log = LoggerFactory.getLogger(SystemMailTDaoImpl.class);

	public void updateSystemMail(SystemMailT sm) {
		log.debug("update SystemMailM");
		try {
			this.getHibernateTemplate().update(sm);
		} catch (RuntimeException re) {
			log.error("update  SystemMailM error", re);
			throw re;
		}
	}

	@SuppressWarnings("unchecked")
	public List<SystemMailT> findAllSystemMail() {
		log.debug("find all findAllSystemMail");
		try {
			String queryString = "from SystemMailT";
			List<SystemMailT> list = this.getHibernateTemplate().find(queryString);
			return list;
		} catch (RuntimeException re) {
			log.error("find all findAllSystemMail error", re);
			throw re;
		}
	}

	public SystemMailT findSysmailByid(String id) {
		log.debug("find by id SystemMailM");
		try {
			SystemMailT instance=(SystemMailT) this.getHibernateTemplate().get("com.jshop.entity.SystemMailT", id);
			return instance;
		} catch (RuntimeException re) {
			log.error("find by id SystemMailM error", re);
			throw re;
		}
	}

	@Override
	public int countfindAllSystemMail() {
		log.debug("countfindAllSystemMail");
		try {
			String queryString = "select count(*) from SystemMailT";
			List list = this.getHibernateTemplate().find(queryString);
			if (list.size() > 0) {
				Object o = list.get(0);
				long l = (Long) o;
				return (int) l;
			}
			return 0;
		} catch (RuntimeException re) {
			log.error("countfindAllSystemMail error", re);
			throw re;
		}
	}

	@Override
	public int delSystemMail(final String id) {
		log.debug("SystemMailT");


, Materials.Stibnite, 100, false);
//        tCrop = ItemList.Crop_Drop_Tine.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Tin, 100, true);
//        addProcess(tCrop, Materials.Cassiterite, 100, false);
//        tCrop = ItemList.Crop_Drop_Plumbilia.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Lead, 100, true);
//        addProcess(tCrop, Materials.Galena, 100, false);
//        tCrop = ItemList.Crop_Drop_Ferru.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Iron, 100, true);
//        addProcess(tCrop, Materials.Magnetite, 100, false);
//        addProcess(tCrop, Materials.BrownLimonite, 100, false);
//        addProcess(tCrop, Materials.YellowLimonite, 100, false);
//        addProcess(tCrop, Materials.VanadiumMagnetite, 100, false);
//        addProcess(tCrop, Materials.BandedIron, 100, false);
//        addProcess(tCrop, Materials.Pyrite, 100, false);
//        addProcess(tCrop, Materials.MeteoricIron, 100, false);
//        tCrop = ItemList.Crop_Drop_Nickel.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Nickel, 100, true);
//        addProcess(tCrop, Materials.Garnierite, 100, false);
//        addProcess(tCrop, Materials.Pentlandite, 100, false);
//        addProcess(tCrop, Materials.Cobaltite, 100, false);
//        addProcess(tCrop, Materials.Wulfenite, 100, false);
//        addProcess(tCrop, Materials.Powellite, 100, false);
//        tCrop = ItemList.Crop_Drop_Zinc.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Zinc, 100, true);
//        addProcess(tCrop, Materials.Sphalerite, 100, false);
//        addProcess(tCrop, Materials.Sulfur, 100, false);
//        tCrop = ItemList.Crop_Drop_Argentia.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Silver, 100, true);
//        addProcess(tCrop, Materials.Galena, 100, false);
//        tCrop = ItemList.Crop_Drop_Aurelia.get(1, new Object[0]);
//        addProcess(tCrop, Materials.Gold, 100, true);
//        addProcess(tCrop, Materials.Magnetite, Materials.Gold, 100, false);
//
//        // Rare Metals Line
//        tCrop = ItemList.Crop_Drop_Bauxite.get(1, new Object[0]);
//        addProcess(tCrop,Materials.Aluminium,60, true);
//        addProcess(tCrop,Materials.Bauxite,100, false);
//        tCrop = ItemList.Crop_Drop_Manganese.get(1, new Object[0]);
//        addProcess(tCrop,Materials.Manganese,30, true);
//        addProcess(tCrop,Materials.Grossular,100, false);
//        addProcess(tCrop,Materials.Spessartine,100, false);
//        addProcess(tCrop,Materials.Pyrolusite,100, false);
//        addProcess(tCrop,Materials.Tantalite,100, false);
//        tCrop = ItemList.Crop_Drop_Ilmenite.get(1, new Object[0]);
//        addProcess(tCrop,Materials.Titanium,100, true);
//        addProcess(tCrop,Materials.Ilmeni


.concurrent.TimeUnit

object AudioAPI : IAPI {
    override val mountPath: String = "/audio"
    private val logger: Logger = LoggerFactory.getLogger("AudioApi")

    private val format: String
        get() = EternalJukebox.config.audioSourceOptions["AUDIO_FORMAT"] as? String ?: "m4a"
    private val uuid: String
        get() = UUID.randomUUID().toString()

    private val base64Encoder: Base64.Encoder by lazy { Base64.getUrlEncoder() }

    private const val FALLBACK_ID = "7GhIk7Il098yCjg4BQjzvb"

    override fun setup(router: Router) {
        router.get("/jukebox/:id").suspendingHandler(AudioAPI::jukeboxAudio)
        router.get("/jukebox/:id/location").suspendingHandler(AudioAPI::jukeboxLocation)
        router.get("/external").suspendingHandler(AudioAPI::externalAudio)
        router.post("/upload").suspendingBodyHandler(this::upload, maxMb = 25)
    }

    private suspend fun jukeboxAudio(context: RoutingContext) {
        if (!EternalJukebox.storage.shouldStore(EnumStorageType.AUDIO)) {
            return context.response().putHeader("X-Client-UID", context.clientInfo.userUID).setStatusCode(501).end(
                jsonObjectOf(
                    "error" to "Configured storage method does not support storing AUDIO",
                    "client_uid" to context.clientInfo.userUID
                )
            )
        }

        val id = context.pathParam("id")

        val audioOverride =
            withContext(Dispatchers.IO) { EternalJukebox.database.provideAudioTrackOverride(id, context.clientInfo) }
        if (audioOverride != null)
            return context.response().redirect(
                "/api/audio/external?url=${
                    withContext(Dispatchers.IO) {
                        URLEncoder.encode(audioOverride, "UTF-8")
                    }
                }"
            )

        val update = context.request().getParam("update")?.toBoolean() ?: false
        if (!update && EternalJukebox.storage.provideIfStored("$id.$format", EnumStorageType.AUDIO, context)) {
            return
        }

        if (update)
            logger.trace(
                "[{}] {} is requesting an update for {}",
                context.clientInfo.userUID, context.clientInfo.remoteAddress, id
            )

        val track = getSongInfoOrSetError(id, context) ?: return

        if (EternalJukebox.audio?.provide(track, context) != true) {
            context.response().putHeader("X-Client-UID", context.clientInfo.userUID).setStatusCode(400).end(
                jsonObjectOf(
                    "error" to "Audio is null",
                    "client_uid" to context.clientInfo.userUID
                )
            )
        }
    }

    private suspend fun jukeboxLocation(context: RoutingContext) {
        val id = context.pathParam("id")

        val audioOverride =
            withContext(Dispatchers.IO) { EternalJukebox.database.provideAudioTrackOverride(id, context.clientInfo) }
        if (audioOverride != null)
            return context.endWithStatusCode(200) { if (!audioOverride.startsWith("upl")) this["url"] = audioOverride }

        val track = getSongInfoOrSetError(id, context) ?: return

        val url = EternalJukebox.audio?.provideLocation(track, context.clientInfo)

        context.endWithStatusCode(200) { if (url != null) this["url"] = url.toExternalForm() }
    }

    private suspend fun getSongInfoOrSetError(id: String, context: RoutingContext): JukeboxInfo? =
        EternalJukebox.spot


tart: Show UI")
    self:ShowMessage("犯人坚强度%：" .. SAN)
    self:ShowMessage("犯人逃跑概率%：" .. ESCAPE)
    self:ShowMessage("拷问成功概率%：" .. WIN)
end

function Quest465:OnSubFinish46518(quest)
    print("46516 Finish: prisoner disappear")
    self:ActionSafeCall(
        function(self)
            local AbyssWater = actorMgr:GetActor("AbyssWater")
            if AbyssWater ~= nil then
                AbyssWater:Destroy(false)
            end
        end
    )
end

function Quest465:OnSubFinish46514(quest)
    print("46514 Finish: Hide NPC")
    self:ActionSafeCall(self.Finish46514Do)
    --actorMgr:CreateActorWithPos(dilucData.Diluc, dilucData.DilucScript, dilucData.DilucID, 0, dilucData.hiddenPos, dilucData.hiddenDir, true)
end
function Quest465:Finish46514Do(quest)
    actorMgr:CreateActorWithPos(abyssWaterData.AbyssWater, abyssWaterData.AbyssWaterScript, abyssWaterData.AbyssWaterID, 0, abyssWaterData.hiddenPos, abyssWaterData.hiddenDir, true, false, 3)
    actorMgr:CreateActorWithPos(dilucData.Diluc, dilucData.DilucScript, dilucData.DilucID, 0, dilucData.hiddenPos, dilucData.hiddenDir, true)
    local TempDungeonData = self.clientData.TempDungeonData
    globalActor:SpawnItem(TempDungeonData.TempDungeonID, TempDungeonData.TempDungeonPos,nil,"TempDungeonData")
end

function Quest465:OnSubFinish46512(quest)
    print("46512 Finish: Creat NPC")
    actorMgr:CreateActorWithPos(hoffmanData.Hoffman, hoffmanData.HoffmanScript, hoffmanData.HoffmanID, 0, hoffmanData.Pos1, hoffmanData.Dir1, true, false, 1004)
end

function Quest465:OnSubFinish46513(quest)
    print("46513 Finish: Hide NPC")
    self:ActionSafeCall(self.Finish46513Do)
    --actorMgr:CreateActorWithPos(hoffmanData.Hoffman, hoffmanData.HoffmanScript, hoffmanData.HoffmanID, 0, hoffmanData.hiddenPos, hoffmanData.hiddenDir, true)
end
function Quest465:Finish46513Do(quest)
    actorMgr:CreateActorWithPos(hoffmanData.Hoffman, hoffmanData.HoffmanScript, hoffmanData.HoffmanID, 0, hoffmanData.hiddenPos, hoffmanData.hiddenDir, true)
end
--@endregion

function Quest465:Start()
end

function Quest465:OnDestroy()
end

return Quest465


1f361, R.drawable.emoji_u1f361);
        sEmojisMap.put(0x1f373, R.drawable.emoji_u1f373);
        sEmojisMap.put(0x1f35e, R.drawable.emoji_u1f35e);
        sEmojisMap.put(0x1f369, R.drawable.emoji_u1f369);
        sEmojisMap.put(0x1f36e, R.drawable.emoji_u1f36e);
        sEmojisMap.put(0x1f366, R.drawable.emoji_u1f366);
        sEmojisMap.put(0x1f368, R.drawable.emoji_u1f368);
        sEmojisMap.put(0x1f367, R.drawable.emoji_u1f367);
        sEmojisMap.put(0x1f382, R.drawable.emoji_u1f382);
        sEmojisMap.put(0x1f370, R.drawable.emoji_u1f370);
        sEmojisMap.put(0x1f36a, R.drawable.emoji_u1f36a);
        sEmojisMap.put(0x1f36b, R.drawable.emoji_u1f36b);
        sEmojisMap.put(0x1f36c, R.drawable.emoji_u1f36c);
        sEmojisMap.put(0x1f36d, R.drawable.emoji_u1f36d);
        sEmojisMap.put(0x1f36f, R.drawable.emoji_u1f36f);
        sEmojisMap.put(0x1f34e, R.drawable.emoji_u1f34e);
        sEmojisMap.put(0x1f34f, R.drawable.emoji_u1f34f);
        sEmojisMap.put(0x1f34a, R.drawable.emoji_u1f34a);
        sEmojisMap.put(0x1f34b, R.drawable.emoji_u1f34b);
        sEmojisMap.put(0x1f352, R.drawable.emoji_u1f352);
        sEmojisMap.put(0x1f347, R.drawable.emoji_u1f347);
        sEmojisMap.put(0x1f349, R.drawable.emoji_u1f349);
        sEmojisMap.put(0x1f353, R.drawable.emoji_u1f353);
        sEmojisMap.put(0x1f351, R.drawable.emoji_u1f351);
        sEmojisMap.put(0x1f348, R.drawable.emoji_u1f348);
        sEmojisMap.put(0x1f34c, R.drawable.emoji_u1f34c);
        sEmojisMap.put(0x1f350, R.drawable.emoji_u1f350);
        sEmojisMap.put(0x1f34d, R.drawable.emoji_u1f34d);
        sEmojisMap.put(0x1f360, R.drawable.emoji_u1f360);
        sEmojisMap.put(0x1f346, R.drawable.emoji_u1f346);
        sEmojisMap.put(0x1f345, R.drawable.emoji_u1f345);
        sEmojisMap.put(0x1f33d, R.drawable.emoji_u1f33d);

        // Places
        sEmojisMap.put(0x1f3e0, R.drawable.emoji_u1f3e


td{
    padding: 15px;
    font-size: 14px;

}
tr:nth-child(even){
    background: #f9f9f9;
}
tfoot{
    background: #2e384f;
    font-weight: bold;
    color: #e7e4e4;
}
tfoot td{
    padding: 15px;
    color: #e7e4e4;
}
.table-container button{
    color: darkgreen;
    background: none;
    cursor: pointer;
}
@media (max-width:480px) {
	.sidebar{
        position: relative;
        top: 0;
        left: 0;
        bottom: 0;
        width: 10px;
        height: 100vh;
        padding: 0 0rem;
        color: #f9f9f9;
        overflow: hidden;
        transition: all 0.5s linear;
        background: #2e384f;
    }
    .sidebar:hover {
        width: 150px;
        transition: 0.5s;
    }
    .main--content{
        width: 100%;

    }
}
// Page Container
.container {
	width: $large-desktop-container;
	margin: 0 auto;
	padding: 0;
	@include breakpoint(desktop-range) {
		width: $desktop-container;
	}
	@include breakpoint(tablet-range) {
		width: $tablet-container;
	}
	@include breakpoint(large-mobile-range) {
		width: $large-mobile-container;
	}
	@include breakpoint(small-mobile-range) {
		width: $mobile-container;
	}
}

// Grid Row and Column Setup
.grid {
	@include display(flex);
	@include flex-flow(row);
	list-style: none;
	margin: 0;
	padding: 0;
	@include breakpoint(mobile-only) {
		@include flex-flow(row wrap);
	}
}

.block {
	@include flex(1);
    min-width: 0;
    min-height: 0;
	@include breakpoint(mobile-only) {
		@include flex(0 100%);
	}
}

// Content Block Spacing
.content {
	margin: $content-margin;
	padding: $content-padding;
}

body [class*="size-"] {
	@include breakpoint(mobile-only) {
		@include flex(0 100%);
	}
}

// Custom Size Modifiers
.size-1-2 {
	@include flex(0 percentage(1/2));
}

.size-1-3 {
	@include flex(0 percentage(1/3));
}

.size-1-4 {
	@include flex(0 percentage(1/4));
}

.size-1-5 {
	@include flex(0 percentage(1/5));
}

.size-1-6 {
	@include flex(0 percentage(1/6));
}

.size-1-7 {
	@include flex(0 percentage(1/7));
}

.size-1-8 {
	@include flex(0 percentage(1/8));
}

.size-1-9 {
	@include flex(0 percentage(1/9));
}

.size-1-10 {
	@include flex(0 percentage(1/10));
}

.size-1-11 {
	@include flex(0 percentage(1/11));
}

.size-1-12 {
	@include flex(0 percentage(1/12));
}

@include breakpoint(tablet-range) {
	.size-tablet-1-2 {
		@include flex(0 percentage(1/2));
	}

	.size-tablet-1-3 {
		@include flex(0 percentage(1/3));
	}

	.size-tablet-1-4 {
		@include flex(0 percentage(1/4));
	}

	.size-tablet-1-5 {
		@include flex(0 percentage(1/


, serializer, funcId: 5)!;
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_String,
        decodeErrorData: null,
      ),
      constMeta: kCrateApiSimpleGreetConstMeta,
      argValues: [name],
      apiImpl: this,
    ));
  }

  TaskConstMeta get kCrateApiSimpleGreetConstMeta => const TaskConstMeta(
        debugName: "greet",
        argNames: ["name"],
      );

  @override
  Future<void> crateApiSimpleInitApp() {
    return handler.executeNormal(NormalTask(
      callFfi: (port_) {
        final serializer = SseSerializer(generalizedFrbRustBinding);
        pdeCallFfi(generalizedFrbRustBinding, serializer,
            funcId: 6, port: port_);
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_unit,
        decodeErrorData: null,
      ),
      constMeta: kCrateApiSimpleInitAppConstMeta,
      argValues: [],
      apiImpl: this,
    ));
  }

  TaskConstMeta get kCrateApiSimpleInitAppConstMeta => const TaskConstMeta(
        debugName: "init_app",
        argNames: [],
      );

  @override
  Future<String> crateApiHttpClientOpenAiClientOpenaiReadResponse(
      {required List<(String, String)> chatLog, required String key}) {
    return handler.executeNormal(NormalTask(
      callFfi: (port_) {
        final serializer = SseSerializer(generalizedFrbRustBinding);
        sse_encode_list_record_string_string(chatLog, serializer);
        sse_encode_String(key, serializer);
        pdeCallFfi(generalizedFrbRustBinding, serializer,
            funcId: 7, port: port_);
      },
      codec: SseCodec(
        decodeSuccessData: sse_decode_String,
        decodeErrorData: null,
      ),
      constMeta: kCrateApiHttpClientOpenAiClientOpenaiReadResponseConstMeta,
      argValues: [chatLog, key],
      apiImpl: this,
    ));
  }

  TaskConstMeta
      get kCrateApiHttpClientOpenAiClientOpenaiReadResponseConstMeta =>
          const TaskConstMeta(
            debugName: "openai_read_response",
            argNames: ["chatLog", "key"],
          );

  RustArcIncrementStrongCountFnType
      get rust_arc_increment_strong_count_ChatCompletionRequestMessage => wire
          .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerChatCompletionRequestMessage;

  RustArcDecrementStrongCountFnType
      get rust_arc_decrement_strong_count_ChatCompletionRequestMessage => wire
          .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerChatCompletionRequestMessage;

  RustArcIncrementStrongCountFnType
      get rust_arc_increment_strong_count_ChatResultsString => wire
          .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerChatResultsString;

  RustArcDecrementStrongCountFnType
      get rust_arc_decrement_strong_count_ChatResultsString => wire
          .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerChatResultsString;

  @protected
  ChatCompletionRequestMessage
      dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerChatCompletionRequestMessage(
          dynamic raw) {
    // Codec=Dco (DartCObject based), see doc to use


?
        get() = when (this) {
            is Success -> chat
            else -> null
        }
}

data class ChatScreenUiState(
    val text: String = "",
    val isSending: Boolean = false,
    val coins: Int = 0,
    val isSubToUnlimited: Boolean = false,
    val actionShowInAppReview: Boolean = false,
)
/*
 * Copyright 2022-2025 MayakaApps
 *
 * 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 required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mayakapps.compose.windowstyler

import java.awt.AlphaComposite
import java.awt.Graphics
import java.awt.Graphics2D
import javax.swing.JPanel

internal class HackedContentPane : JPanel() {

    override fun paint(g: Graphics) {
        if (background.alpha != 255) {
            val gg = g.create()
            try {
                if (gg is Graphics2D) {
                    gg.setColor(background)
                    gg.composite = AlphaComposite.getInstance(AlphaComposite.SRC)
                    gg.fillRect(0, 0, width, height)
                }
            } finally {
                gg.dispose()
            }
        }

        super.paint(g)
    }
}/*
 * Copyright 2022-2025 MayakaApps
 *
 * 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 required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mayakapps.compose.windowstyler.windows

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.colorspace.connect

internal fun Color.toBgr(): Int {
    val colorSpace = colorSpace
    val color = floatArrayOf(red, green, blue)

    // The transformation saturates the output
    colorSpace.connect().transform(color)

    return ((color[2] * 255.0f + 0.5f).toInt() shl 16) or
            ((color[1] * 255.0f + 0.5f).toInt() shl 8) or
            (color[0] * 255.0f + 0.5f).toInt()
}

// Modified version of toArgb
internal fun Color.toAbgr(): Int {
    val colorSpace = colorSpace
    val color = floatArrayOf(red, green, blue, alpha)

    // The transformation saturates the output
    colorSpace.connect().transform(color)

    return (color[3] * 255.0f + 0.5f).toInt() shl 24 or
            ((color[2] * 255.0f + 0.5f).toInt() shl 16) or
            ((color[1] * 255.0f + 0.5f).toInt() shl 8) or
            (color[0] * 255.0f + 0.5f).toInt()
}

// For some reason, passing 0 (fully transparent black) to the setAccentPolicy with
// transparent accent policy results in solid red color. As a workaround, we pass
// fully transparent white which has the same visual effect.
internal fun Color.toAbgrForTransparent() = if (alpha == 0F) 0x00FFFFFF else toAbgr()/*
 * Copyright 2022-2025 MayakaApps
 *
 * 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://


s=strides)

        # Remove excess elements at the end.
        out_width = (n_inp_steps - (kernel_size - 1) * dilation) / stride
        x = tf.slice(out, [0]*input_rank, [-1, out_width] + [-1]*(input_rank-2))

        # Batch normalization
        if use_batch_norm:
            x = _bn(x, decay=0.99, scale=True, param_initializers=bn_initializer, is_training=is_training, trainable=trainable, reuse=reuse, scope='bn')

        # Bias
        elif use_bias:
            x = add_bias(x, n_units, biases_initializer, dtype, trainable)

        # Activation
        if activation_fn is not None:
            x = activation_fn(x)

        return utils.collect_named_outputs(tf.GraphKeys.ACTIVATIONS, sc.original_name_scope, x)

def max_pool2d(x, window, stride=1, padding='SAME', name='MaxPool'):
    input_rank = x.get_shape().ndims

    if input_rank is None: raise ValueError('Rank of inputs must be known')
    if input_rank < 3: raise ValueError('Rank of inputs is %d, which is < 3' % input_rank)
    if input_rank == 3:
        x = tf.expand_dims(x, 3)

    window = utils.n_positive_integers(2, window)
    if len(window) < input_rank-2:
        window = (1,)*(input_rank-len(window)-2) + window

    stride = utils.n_positive_integers(2, stride)
    if len(stride) < input_rank-2:
        stride = (1,)*(input_rank-len(stride)-2) + stride

    out = tf.nn.pool(x, window,'MAX', padding, strides=stride, name=name)
    return utils.collect_named_outputs(tf.GraphKeys.ACTIVATIONS, name, out)

def max_pool1d(x, kernel_size, stride=1, padding='SAME', name='MaxPool'):
    with tf.variable_scope(name, 'MaxPool1D', [x]) as sc:
        input_rank = x.get_shape().ndims

        if input_rank is None: raise ValueError('Rank of inputs must be known')
        if input_rank not in [2, 3]: raise ValueError('Rank of inputs is %d, which is not 2 or 3' % input_rank)
        if input_rank == 2:
            x = tf.expand_dims(x, 2)
        x = tf.expand_dims(x, axis=1)
        x = max_pool2d(x, [1, kernel_size], [1, stride], padding=padding, name=name)
        x = tf.squeeze(x, axis=1, name=name)
        return x

def avg_pool2d(x, kernel_size, stride=1, padding='SAME', name='AvgPool'):
    return layers.avg_pool2d(x, kernel_size, stride, padding=padding, outputs_collections=tf.GraphKeys.ACTIVATIONS, scope=name)

def avg_pool1d(x, kernel_size, stride=1, padding='SAME', name='AvgPool'):
    with tf.variable_scope(name, 'AvgPool1D', [x]) as sc:
        input_rank = x.get_shape().ndims

        if input_rank is None: raise ValueError('Rank of inputs must be known')
        if input_rank not in [2, 3]: raise ValueError('Rank of inputs is %d, which is not 2 or 3' % input_rank)
        if input_rank == 2:
            x = tf.expand_dims(x, 2)
        x = tf.expand_dims(x, axis=1)
        x = avg_pool2d(x, [1, kernel_size], [1, stride], padding=padding, name=name)
        x = tf.squeeze(x, axis=1, name=name)
        return x

def dropout(x,
            keep_prob=0.5,
            is_training=False,
            name='drop'):
    with tf.variable_scope(name, 'dropout', [x]) as sc:
        x = utils.smart_cond(is_training,
                             lambda: tf.nn.dropout(x, keep_prob, name=name),
                             lambda: x, name=name)
        return utils.collect_named_outputs(tf.GraphKeys.ACTIVATIONS, sc.original_name_scope, x)


    }
});

app.post("/step", async (req, res) => {
    // import useful package
    let response_sent = false;
    function otherError(err) {
        console.log("Uncaught Error");
        bot.emit("error", handleError(err));
        bot.waitForTicks(bot.waitTicks).then(() => {
            if (!response_sent) {
                response_sent = true;
                res.json(bot.observe());
            }
        });
    }

    process.on("uncaughtException", otherError);

    const mcData = require("minecraft-data")(bot.version);
    mcData.itemsByName["leather_cap"] = mcData.itemsByName["leather_helmet"];
    mcData.itemsByName["leather_tunic"] =
        mcData.itemsByName["leather_chestplate"];
    mcData.itemsByName["leather_pants"] =
        mcData.itemsByName["leather_leggings"];
    mcData.itemsByName["leather_boots"] = mcData.itemsByName["leather_boots"];
    mcData.itemsByName["lapis_lazuli_ore"] = mcData.itemsByName["lapis_ore"];
    mcData.blocksByName["lapis_lazuli_ore"] = mcData.blocksByName["lapis_ore"];
    const {
        Movements,
        goals: {
            Goal,
            GoalBlock,
            GoalNear,
            GoalXZ,
            GoalNearXZ,
            GoalY,
            GoalGetToBlock,
            GoalLookAtBlock,
            GoalBreakBlock,
            GoalCompositeAny,
            GoalCompositeAll,
            GoalInvert,
            GoalFollow,
            GoalPlaceBlock,
        },
        pathfinder,
        Move,
        ComputedPath,
        PartiallyComputedPath,
        XZCoordinates,
        XYZCoordinates,
        SafeBlock,
        GoalPlaceBlockOptions,
    } = require("mineflayer-pathfinder");
    const { Vec3 } = require("vec3");

    // Set up pathfinder
    const movements = new Movements(bot, mcData);
    bot.pathfinder.setMovements(movements);

    bot.globalTickCounter = 0;
    bot.stuckTickCounter = 0;
    bot.stuckPosList = [];

    function onTick() {
        bot.globalTickCounter++;
        if (bot.pathfinder.isMoving()) {
            bot.stuckTickCounter++;
            if (bot.stuckTickCounter >= 100) {
                onStuck(1.5);
                bot.stuckTickCounter = 0;
            }
        }
    }

    bot.on("physicTick", onTick);

    // initialize fail count
    let _craftItemFailCount = 0;
    let _killMobFailCount = 0;
    let _mineBlockFailCount = 0;
    let _placeItemFailCount = 0;
    let _smeltItemFailCount = 0;

    // Retrieve array form post bod
    const code = req.body.code;
    const programs = req.body.programs;
    bot.cumulativeObs = [];
    await bot.waitForTicks(bot.waitTicks);
    const r = await evaluateCode(code, programs);
    process.off("uncaughtException", otherError);
    if (r !== "success") {
        bot.emit("error", handleError(r));
    }
    await returnItems();
    // wait for last message
    await bot.waitForTicks(bot.waitTicks);
    if (!response_sent) {
        response_sent = true;
        res.json(bot.observe());
    }
    bot.removeListener("physicTick", onTick);

    async function evaluateCode(code, programs) {
        // Echo the code produced for players to see it. Don't echo when the bot code is already producing dialog or it will double echo
        try {
            await eval("(async () => {" + programs + "\n" + code + "})()");
            return "success";
        } catch (err) {


eRect.Y; y < sourceRect.Y + sourceRect.Height; y++)
            {
                for (int x = sourceRect.X; x < sourceRect.X + sourceRect.Width; x++)
                {
                    int i = stride * y + 4 * x;

                    byte a = buffer[i + 3];
                    byte r = (byte)(buffer[i] * a / 256);
                    byte g = (byte)(buffer[i + 1] * a / 256);
                    byte b = (byte)(buffer[i + 2] * a / 256);

                    pixels.SetValue(b, i + offset);
                    pixels.SetValue(g, i + offset + 1);
                    pixels.SetValue(r, i + offset + 2);
                    pixels.SetValue(a, i + offset + 3);
                }
            }
        }

        protected override Freezable CreateInstanceCore()
        {
            return new RgbaBitmapSource(buffer, width, height);
        }

        public override event EventHandler<DownloadProgressEventArgs> DownloadProgress;
        public override event EventHandler DownloadCompleted;
        public override event EventHandler<ExceptionEventArgs> DownloadFailed;
        public override event EventHandler<ExceptionEventArgs> DecodeFailed;

        public override double DpiX
        {
            get { return 96; }
        }

        public override double DpiY
        {
            get { return 96; }
        }

        public override PixelFormat Format
        {
            get { return PixelFormats.Pbgra32; }
        }

        public override int PixelWidth
        {
            get { return width; }
        }

        public override int PixelHeight
        {
            get { return height; }
        }

        public override double Width
        {
            get { return width; }
        }

        public override double Height
        {
            get { return height; }
        }
    }
}


weui-BTN-ACTIVE-MASK: rgba(255, 255, 255, .1)}}.wx-root,body{--weui-BTN-DEFAULT-ACTIVE-BG: #e6e6e6}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-BTN-DEFAULT-ACTIVE-BG: rgba(255, 255, 255, .126)}}.wx-root,body{--weui-DIALOG-LINE-COLOR: rgba(0, 0, 0, .1)}.wx-root[data-weui-theme=dark],body[data-weui-theme=dark]{--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}@media (prefers-color-scheme: dark){.wx-root:not([data-weui-theme=light]),body:not([data-weui-theme=light]){--weui-DIALOG-LINE-COLOR: rgba(255, 255, 255, .1)}}.weui-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,.6)}.weui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0}.weui-half-screen-dialog{position:fixed;left:0;right:0;bottom:0;min-height:255px;max-height:75%;z-index:5000;line-height:1.4;background-color:var(--weui-BG-2);color:var(--weui-FG-0);border-top-left-radius:12px;border-top-right-radius:12px;overflow:hidden;padding:0 24px;padding:0 calc(24px + constant(safe-area-inset-right)) constant(safe-area-inset-bottom) calc(24px + constant(safe-area-inset-left));padding:0 calc(24px + env(safe-area-inset-right)) env(safe-area-inset-bottom) calc(24px + env(safe-area-inset-left));box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;outline:0}@media only screen and (max-device-height: 558px){.weui-half-screen-dialog{max-height:calc(100% - 16px)}}.weui-half-screen-dialog__hd{min-height:64px;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-negative:0;flex-shrink:0}.weui-half-screen-dialog__hd .weui-btn_icon{position:absolute;top:50%;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);color:inherit}.weui-half-screen-dialog__hd .weui-btn_icon:active{opacity:.5}.weui-half-screen-dialog__hd__side{position:relative;left:-8px}.weui-half-screen-dialog__hd__main{-ms-flex:1;flex:1}.weui-half-screen-dialog__hd__side+.weui-half-screen-dialog__hd__main{text-align:center;padding:0 40px}.weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side{right:-8px;left:auto}.weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side .weui-icon-btn,.weui-half-screen-dialog__hd__main+.weui-half-screen-dialog__hd__side .weui-btn_icon{right:0}.weui-half-scr


ion (Mobile) | Sign In (Mobile) |
# Protocol Buffers v3

本章将讨论在设计 API 时如何使用 Protocol Buffers。为了简化开发者体验并提高运行效率，gRPC API **应该**使用 Protocol Buffers v3（proto3）进行API定义。

[Protocol Buffers](https://github.com/google/protobuf) 是一种简单的语言中立并且平台中立的接口定义语言（IDL），用于定义数据结构模式和编程接口。它支持二进制和文本传输格式，并且在不同平台上使用不同的传输协议。

Proto3 是 Protocol Buffers 的最新版本，包括以下更改：

* 存在字段，也称为 ```hasField```，不适用于基本类型字段。未设置的基本泪ing字段具有语言特定的默认值。
    * 消息存在字段仍然可用，其可以使用编译器生成的 ```hasField``` 方法来测试，或者和 null 比较，或由实现定义的标记值。
* 用户定义的默认值不再可用。
* 枚举（Enum）定义**必须**从零开始。
* 必填（Required fields）字段不再可用。
* 扩展（Extensions）不再可用。改用 ```google.protobuf.Any``` 代替。
    * 由于向后和运行时兼容性原因，```google/protobuf/descriptor.proto``` 作为这一规则的例外。
* 组（Group）语法已删除。

删除这些功能的原因是使 API 设计更简单，更稳定，更高效。例如，通常需要在记录消息之前过滤一些字段，例如删除敏感信息，如果字段是必需的，则不可能执行删除操作。

有关详细信息，请参阅协议[Protocol Buffers详细文档](https://developers.google.com/protocol-buffers/)。

[![Docker Hub](https://img.shields.io/badge/Docker-DockerHub-blue?style=flat-square)](https://hub.docker.com/r/archmonger/conreq) [![GitHub Container Registry](https://img.shields.io/badge/Docker-GitHub-blue?style=flat-square)](https://github.com/Archmonger/Conreq/pkgs/container/conreq) [![Discord](https://img.shields.io/discord/440067432552595457?style=flat-square&label=Discord&logo=discord)](https://discord.gg/gQhGZzEjmX "Chat with the community and get realtime support!")

## Welcome to the Conreq Documentation

Conreq is an extensible self-hosted web platform built around [Django](https://www.djangoproject.com/). Read through the docs to learn how to set up Conreq, or how to contribute to the Conreq repository!

Want to join the community or have a question? Chat with us on [Discord](https://discord.gg/gQhGZzEjmX) or create a post on [GitHub Discussions](https://github.com/Archmonger/Conreq/discussions)!

---

## Communities

[:fontawesome-brands-discord: Discord](https://discord.gg/gQhGZzEjmX){ .md-button .md-button--primary } [:fontawesome-brands-github: GitHub Discussions](https://github.com/Archmonger/Conreq/discussions){ .md-button .md-button--primary }
1. Go to `Server Settings` within Conreq and enable `Organizr User Authentication`

2. Set up a `nginx` reverse proxy.

    _If you need help with this, join the [`organizr` Discord](https://discord.com/invite/TrNtY7N) and post in #groups._

3. In your Conreq block within `nginx`, add the following...

    ```nginx
    # Sets Conreq to be accessible by all Organizr users. Google "Organizr ServerAuth"


:  "github",
			},
			CommitterEmailPattern: &PatternRuleParameters{
				Name:     Ptr("avoid commit emails"),
				Negate:   Ptr(true),
				Operator: "ends_with",
				Pattern:  "abc",
			},
			BranchNamePattern: &PatternRuleParameters{
				Name:     Ptr("avoid branch names"),
				Negate:   Ptr(true),
				Operator: "regex",
				Pattern:  "github$",
			},
			TagNamePattern: &PatternRuleParameters{
				Name:     Ptr("avoid tag names"),
				Negate:   Ptr(true),
				Operator: "contains",
				Pattern:  "github",
			},
			CodeScanning: &CodeScanningRuleParameters{
				CodeScanningTools: []*RuleCodeScanningTool{
					{
						AlertsThreshold:         CodeScanningAlertsThresholdErrors,
						SecurityAlertsThreshold: CodeScanningSecurityAlertsThresholdHighOrHigher,
						Tool:                    "CodeQL",
					},
				},
			},
		},
	}
	if !cmp.Equal(ruleset, want) {
		t.Errorf("Enterprise.CreateRepositoryRuleset returned %+v, want %+v", ruleset, want)
	}

	const methodName = "CreateRepositoryRuleset"

	testNewRequestAndDoFailure(t, methodName, client, func() (*Response, error) {
		got, resp, err := client.Enterprise.CreateRepositoryRuleset(ctx, "e", RepositoryRuleset{})
		if got != nil {
			t.Errorf("testNewRequestAndDoFailure %v = %#v, want nil", methodName, got)
		}
		return resp, err
	})
}

func TestEnterpriseService_CreateRepositoryRuleset_OrgNameRepoProperty(t *testing.T) {
	t.Parallel()
	client, mux, _ := setup(t)

	mux.HandleFunc("/enterprises/e/rulesets", func(w http.ResponseWriter, r *http.Request) {
		testMethod(t, r, "POST")
		fmt.Fprint(w, `{
			"id": 84,
			"name": "ruleset",
			"target": "branch",
			"source_type": "Enterprise",
			"source": "e",
			"enforcement": "active",
			"bypass_actors": [
				{
					"actor_id": 234,
					"actor_type": "Team"
				}
			],
			"conditions": {
				"organization_name": {
					"include": [
						"important_organization",
						"another_important_organization"
					],
					"exclude": [
						"unimportant_organization"
					]
				},
			  "repository_property": {
					"include": [
						{
							"name": "testIncludeProp",
							"source": "custom",
							"property_values": [
								"true"
							]
						}
					],
					"exclude": [
						{
							"name": "testExcludeProp",
							"property_values": [
								"false"
							]
						}
					]
				},
			  "ref_name": {
					"include": [
						"refs/heads/main",
						"refs/heads/master"
					],
					"exclude": [
						"refs/heads/dev*"
					]
				}
			},
			"rules": [
			  {
				"type": "creation"
			  },
			  {
				"type": "update",
				"parameters": {
				  "update_allows_fetch_and_merge": true
				}
			  },
			  {
				"type": "deletion"
			  },
			  {
				"type": "required_linear_history"
			  },
			  {
				"type": "required_deployments",
				"parameters": {
				  "required_deployment_environments": ["test"]
				}
			  },
			  {
				"type": "required_signatures"
			  },
			  {
				"type": "pull_request",
				"parameters": {
					"allowed_merge_methods": ["rebase","squash"],
				  "dismiss_stale_reviews_on_push": true,
				  "require_code_owner_review": true,
				  "require_last_push_approval": tr


,(76,240),(74,240),(72,480),(69,240),(67,240),
    (64,960),(72,960),
    (69,360),(72,120),(69,240),(67,240),(64,240),(67,240),(69,240),(72,240),
    (67,1440),(76,240),(79,240),
    (74,240),(76,240),(74,240),(72,240),(71,480),(69,480),
    (67,1440),(64,240),(67,240),
    (62,240),(64,240),(62,240),(60,240),(59,480),(57,480),
    (55,1920),
]

# 左手伴奏（简单的低音进行）
left_hand_notes = [
    (36,480),(43,480),(45,480),(48,480),
    (40,480),(48,480),(45,480),(43,480),
    (36,480),(43,480),(45,480),(48,480),
    (43,480),(48,480),(50,480),(55,480),
    (41,240),(50,240),(53,240),(57,1200),
    (40,240),(47,240),(50,240),(52,240),(55,960),
    (45,240),(52,240),(57,240),(48,240),(52,960),
    (31,240),(38,240),(43,240),(48,240),(55,960),
    (52,240),(59,240),(62,240),(64,240),(55,960),
    (45,240),(52,240),(55,240),(57,240),(60,960),
    (40,240),(47,240),(50,240),(52,240),(55,960),
    (45,240),(52,240),(55,240),(57,240),(60,240),(64,240),(0,480),
    (36,240),(43,240),(45,240),(48,1200),
    (43,240),(50,240),(55,240),(57,1200),
    (45,240),(52,240),(55,240),(57,1200),
    (38,240),(45,240),(48,240),(50,240),(55,960),
    (31,240),(38,240),(43,240),(48,240),(55,480),(72,480),
    (69,480),(67,480),(62,480),(64,480),
    (55,1440),(60,480),
    (57,480),(55,480),(50,480),(52,480),
    (43,1920)
]

# 创建右手旋律轨道
for note, duration in right_hand_notes:
    melody_track.append(Message('note_on', note=note, velocity=80, time=0))
    melody_track.append(Message('note_off', note=note, velocity=80, time=duration))

# 创建左手轨道
bass_track = MidiTrack()
midi.tracks.append(bass_track)
bass_track.append(Message('program_change', program=0, time=0))

# 添加左手伴奏
for note, duration in left_hand_notes:
    bass_track.append(Message('note_on', note=note, velocity=60, time=0))
    bass_track.append(Message('note_off', note=note, velocity=60, time=duration))

# 创建中国传统打击乐轨道（通道 9）
drum_track = MidiTrack()
midi.tracks.append(drum_track)

drum_pattern = [
    (56, 960),  # 大鼓
    (57, 960),  # 小堂鼓
    (58, 480),  # 铙钹
    (59, 480),  # 木鱼
    (60, 960),  # 碰铃
    (61, 480),  # 云锣
    (56, 960), (58,


 } from "@angular/core";
import { Socket } from "ngx-socket-io";
import { Usuario } from "../classes/usuario";
import { Router } from "@angular/router";

@Injectable({
  providedIn: "root"
})
export class WebsocketsService {
  public socketStatus = false;
  public usuario: Usuario = null;

  constructor(private socket: Socket, private router: Router) {
    this.cargarStorage();
    // este se ejecuta una vez
    this.checkStatus();
  }

  // Metodo para revisar esto del servidor
  // Estos son observables : van a estar pendientes de lo que suceda
  checkStatus() {
    this.socket.on("connect", () => {
      console.log("Conectado al sevidor");
      this.socketStatus = true;
      this.cargarStorage();
    });
    this.socket.on("disconnect", () => {
      console.log("Desconectado del sevidor");
      this.socketStatus = false;
    });
  }

  // Metodo para decirle a mi servidor que tipo de eventos estoy disparando
  // Mensajes : emite cualquier información hacia el servidor
  emit(evento: string, payload?: any, callback?: Function) {
    // emit(eventos que quiero emitir, payload?, callback?)
    console.log("Emitiendo ", evento);
    this.socket.emit(evento, payload, callback);
  }

  // Metodo que escuche cualquier evento que emita el servidor
  // necesitamos que este metodo regrese un observable , donde pueda subscribirme en cualquier
  // parte de la aplicación que yo necesite estar escuchando ese evento en particular
  listen(evento: string) {
    return this.socket.fromEvent(evento);
  }

  // Metodo Login: necesito que mi socket-server sepa que cliente está conectado
  loginWS(nombre: string) {
    // console.log('Configurando', nombre);

    // Optimización
    return new Promise((resolve, reject) => {
      this.emit("configurar-usuario", { nombre }, resp => {
        // console.log(resp);

        this.usuario = new Usuario(nombre);
        this.guardarStorage();

        resolve();
      });
    });

    // this.socket.emit('configurar-usuario',{nombre},(resp) =>{
    //   // callback que se ejecuta despues
    //   console.log(resp);
    // });
  }

  logoutWS() {
    this.usuario = null;
    localStorage.removeItem("usuario");

    const payload = { nombre: "sin-nombre" };

    this.emit("configurar-usuario", payload,()=>{});

    this.router.navigateByUrl('/');
  }

  getUsuario() {
    return this.usuario;
  }

  // Metodo para almacenar información en LocalStorage
  guardarStorage() {
    localStorage.setItem("usuario", JSON.stringify(this.usuario));
  }

  // Metodo para leer información del Localstorage
  cargarStorage() {
    // si existe algo en localstorage
    if (localStorage.getItem("usuario")) {
      this.usuario = JSON.parse(localStorage.getItem("usuario"));
      this.loginWS(this.usuario.nombre);
    }
  }
}
import { cp, exec, ls, mkdir, mv, pwd, test } from 'shelljs';

const fs = require('fs');

export default class NodeCmdUtil {
  public static reactModule: string = 'bms-react-js-example';
  public static preactModule: string = 'bms-preact-example';
  public static typescriptModule: string = 'typescript';
  public static es6Module: string = 'bms-w


0xfa,0x04,0x16,0x7d,0x01,0x5f,0x01,0x01]

v_cmpx_ngt_f16 v1, v2 row_xmask:0 row_mask:0x1 bank_mask:0x3 bound_ctrl:1 fi:0
// GFX11: encoding: [0xfa,0x04,0x16,0x7d,0x01,0x60,0x09,0x13]

v_cmpx_ngt_f16 -|v127|, -|v127| row_xmask:15 row_mask:0x3 bank_mask:0x0 bound_ctrl:0 fi:1
// GFX11: encoding: [0xfa,0xfe,0x16,0x7d,0x7f,0x6f,0xf5,0x30]

v_cmpx_ngt_f32 v1, v2 quad_perm:[3,2,1,0]
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x1b,0x00,0xff]

v_cmpx_ngt_f32 v1, v2 quad_perm:[0,1,2,3]
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0xe4,0x00,0xff]

v_cmpx_ngt_f32 v1, v2 row_mirror
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x40,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_half_mirror
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x41,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_shl:1
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x01,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_shl:15
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x0f,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_shr:1
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x11,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_shr:15
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x1f,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_ror:1
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x21,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_ror:15
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x2f,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_share:0 row_mask:0xf bank_mask:0xf
// GFX11: encoding: [0xfa,0x04,0x36,0x7d,0x01,0x50,0x01,0xff]

v_cmpx_ngt_f32 v1, v2 row_share:15 row_mask:0x0 bank_mask:0x1
// GFX11: encoding: [0xfa,0x04,0x36,0x


/*
 * Copyright (c) 2018, Lawrence Livermore National Security, LLC.
 * Produced at the Lawrence Livermore National Laboratory.
 *
 * Copyright 2018, UT-Battelle, LLC.
 *
 * LLNL-CODE-741539
 * All rights reserved.
 *
 * This is the license for UnifyFS.
 * For details, see https://github.com/LLNL/UnifyFS.
 * Please read https://github.com/LLNL/UnifyFS/LICENSE for full license text.
 */

#include <stdint.h>

/*
 * Store a random string of length @len into buffer @buf.
 */
void testutil_rand_string(char* buf, size_t len);

/*
 * Generate a path of length @len and store it into buffer @buf. The
 * path will begin with the NUL-terminated string pointed to by @pfx,
 * followed by a slash (/), followed by a random sequence of characters.
 */
void testutil_rand_path(char* buf, size_t len, const char* pfx);

/*
 * Return a pointer to the path name of the test temp directory. Use the
 * value of the environment variable UNIFYFS_TEST_TMPDIR if it exists,
 * otherwise use P_tmpdir (defined in stdio.h, typically '/tmp').
 */
char* testutil_get_tmp_dir(void);

/*
 * Return a pointer to the path name of the UnifyFS mount point. Use the
 * value of the environment variable UNIFYFS_MOUNTPOINT if it exists,
 * otherwise use 'tmpdir/unifyfs'.
 */
char* testutil_get_mount_point(void);

/* Stat the file associated to by path and store the global size of the
 * file at path in the address of the global pointer passed in. */
void testutil_get_size(char* path, size_t* global);

/* Sequentially number every 8 bytes (uint64_t) in given buffer */
void testutil_lipsum_generate(char* buf, uint64_t len, uint64_t offset);

/*
 * Check buffer contains lipsum generated data.
 * returns 0 on success, -1 otherwise with @error_offset set.
 */
int testutil_lipsum_check(const char* buf, uint64_t len, uint64_t offset,
                          uint64_t* error_offset);

/*
 * Check buffer contains all zero bytes.
 * returns 0 on success, -1 otherwise.
 */
int testutil_zero_check(const char* buf, size_t len);


u cerveza Santa Cruz 1906, que recientemente recibió la medalla de oro en Monde Selection 2020, una competencia que premia la calidad y excelencia en el proceso de elaboración de los productos que se presentan. Santa Cruz 1906
        `,
        ingredientes: [
            'Malta de cebada',
            'Lúpulo'
        ],
        year: 1906,
        fabricante: 'La constancia',
        origen: 'El Salvador',
        img: 'assets/img/santa-cruz.png'

    },
    {
        nombre:'Suprema',
        alcohol: '5.0%',
        bio: `
        Cerveza Suprema fue lanzada al mercado salvadoreño en el año 1967, como una marca Premium, en la cual se conjuga la tradición cervecera con un estilo único de elegancia y sabor europeo. El sabor de calidad internacional la hace distinta las demás y ha logrado que, a través de los años y hasta la fecha, sea la preferida de los conocedores de cerveza.
        `,
        ingredientes: [
            'Malta',
            'Agua',
            'Lúpulo',
            'levadura'
        ],
        year: 1967,
        fabricante: 'La constancia',
        origen: 'El Salvador',
        img: 'assets/img/suprema.png'

    },
    {
        nombre:'Budweiser',
        alcohol: '4.0',
        bio: `
        Budweiser (Anheuser-Busch) es una cerveza de origen checo, patentada en los Estados Unidos y una de las más populares en dicho país. Budweiser se hace con una proporción de arroz1 de hasta un 30%, además de lúpulo y malta de cebada. Budweiser se produce en varias fábricas. Es una cerveza filtrada disponible en forma de barril y envasado.
        `,
        ingredientes: [
            'Malta',
            'Agua',
            'Lúpulo',
            'levadura'
        ],
        year: 1876,
        fabricante: 'Anheuser-Busch',
        origen: 'Estados Unidos',
        img: 'assets/img/busweiser.png'

    },
    {
        nombre:'Toña',
        alcohol: '4.6',
        bio: `
        La Cerveza Toña es una de las marcas más conocidas del mercado nicaragüense. Nació en 1977, ahora está disponible no solo en Nicaragua, sino también en los Estados Unidos, Honduras y en Costa Rica.
        `,
        ingredientes: [
            'Malta',
            'Agua',
            'Lúpulo',
            'levadura'
        ],
        year: 1977,
        fabricante: 'Compañía Cervecera de Nicaragua',
        origen: 'Nicaragua',
        img: 'assets/img/toña.jpg'

    },
    {
        nombre:'Modelo',
        alcohol: '4.0',
        bio: `
        Modelo Especial, es una marca premium producida por Grupo Modelo que es líder entre las cervezas en lata en México y ocupa el tercer lugar entre las cervezas importadas más populares en Estados Unidos. Es una cerveza tipo American pilsner, muy diferente, llena de actitud e imagen
        `,
        ingredientes: [
            'Malta',
            'Agua',
            'Lúpulo',
            'levadura'
        ],
        year: 1925,
        fabricante: 'Grupo Modelo',
        origen: 'México',
        img: 'assets/img/modelo.png'

    },
    {
        nombre:'Stella Artois',
        alcohol: '5.4%',
        bio: `
        En 1926, Stella Artois se lanzó inicialmente como una cerveza de temporada, especialmente para el


pecified.  The current configuration for type {0} is:".ToFormat(
                            pluginType.GetFullName()));
                }
                else
                {
                    ex.Context = "There is no configuration specified for " + pluginType.GetFullName();
                }

                throw ex;
            }

            var lifecycle = pipelineGraph.DetermineLifecycle(pluginType, instance);

            var o = GetObject(pluginType, instance, lifecycle);

            if (!(lifecycle is UniquePerRequestLifecycle) && pluginType != typeof(IContainer))
            {
                _defaults.Add(pluginType, o);
            }

            return o;
        }

        public object GetObject(Type pluginType, Instance instance, ILifecycle lifecycle)
        {
            if (instance is IValue)
            {
                return _resolver.BuildNewInSession(pluginType, instance);
            }

            if (lifecycle is UniquePerRequestLifecycle)
            {
                return _resolver.BuildUnique(pluginType, instance);
            }

            var key = instance.InstanceKey(pluginType);
            if (!_cachedObjects.ContainsKey(key))
            {
                var o = _resolver.ResolveFromLifecycle(pluginType, instance);
                _cachedObjects[key] = o;

                return o;
            }

            return _cachedObjects[key];
        }

        public object TryGetDefault(Type pluginType, IPipelineGraph pipelineGraph)
        {
            if (_defaults.ContainsKey(pluginType)) return _defaults[pluginType];

            var instance = pipelineGraph.Instances.GetDefault(pluginType);
            if (instance == null) return null;

            var lifecycle = pipelineGraph.DetermineLifecycle(pluginType, instance);
            var o = GetObject(pluginType, instance, lifecycle);
            _defaults.Add(pluginType, o);

            return o;
        }

        // Tested through BuildSession
        public IEnumerable<T> All<T>()
        {
            return _cachedObjects.Values.OfType<T>();
        }
    }
}


.setCallback(EqualizerActivity.this);
        //设置当前正在使用的配置名称
        this.usingEqualizerName = EqualizerHandler.INSTANCE.usingProfileName();
        adapter.setUsingName(this.usingEqualizerName);

        //配置均衡器控制View
        this.equalizerImage = (EqualizerImage) findViewById(R.id.equalizerImage);
        //先进行控制点的初始化，再进行值的初始化
        this.equalizerImage.initPoints(EqualizerHandler.INSTANCE.numberOfBands());
        this.equalizerImage.initLevelValues(EqualizerHandler.INSTANCE.getEqualizerArgsProfile(this.usingEqualizerName), false);
        this.equalizerImage.setCallback(EqualizerActivity.this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //释放回调接口
        EqualizerHandler.INSTANCE.setCallback(null);
        EqualizerHandler.INSTANCE.asyncSaveEqualizerArgs();
    }

    @Override
    protected void onViewClick(View clickedView) {
        switch (clickedView.getId()) {
            case R.id.equalizer_save:
                if (dialogKeeper.get() == null) {
                    dialogKeeper = new WeakReference<>(new SavingEqzDialog(EqualizerActivity.this));
                }
                dialogKeeper.get().show();
                break;
        }
    }

    @Override
    protected boolean onViewLongClick(View holdedView) {
        return false;
    }

    /**
     * 点击均衡器配置
     *
     * @param name     配置名称
     * @param position 点击的位置
     */
    @Override
    public void onItemClick(String name, int position) {
        if (!this.usingEqualizerName.equals(name) && EqualizerHandler.INSTANCE.applyEqualizerArgs(name)) {
            //应用配置成功
            this.usingEqualizerName = name;
        }
    }

    /**
     * 点击删除配置
     *
     * @param name     配置名称
     * @param position 点击的位置
     */
    @Override
    public void onDelete(String name, int position) {
        if (name.equals(this.usingEqualizerName)) {
            //如果删除的是当前正在使用的配置档，则恢复到Default档
            EqualizerHandler.INSTANCE.applyEqualizerArgs("Default");
            this.usingEqualizerName = "Default";
        }
        EqualizerHandler.INSTANCE.removeSavedEqualizerArgs(name);
        this.adapter.removeSource(name);
        this.adapter.notifyItemRemoved(position);
        //更新均衡器视图
        this.equalizerImage.initLevelValues(EqualizerHandler.INSTANCE.getEqualizerArgsProfile(this.usingEqualizerName), false);
    }

    /**
     * 当使用的配置文件发生变化
     *
     * @param name 配置文件名称
     */
    @Override
    public void onUsingProfileChanged(String name) {
        this.adapter.setUsingName(name);
        this.usingEqualizerName = name;
        //更新均衡器视图
        this.equalizerImage.initLevelValues(EqualizerHandler.INSTANCE.getEqualizerArgsProfile(this.usingEqualizerName), false);
    }

    /**
     * 等级发生变化回调接口
     *
     * @param index          调节位置
     * @param equalizerLevel 均衡器的等级数据
     */
    @Override
    public void onLevelChanged(short index, short equalizerLevel) {
        EqualizerHandler.INSTANCE.applyEqualizerArg(index, equalizerLevel);
    }

    /**
     * 调节结束(手动调用Level调节、停止触摸调节)后，所有的等级数据
     *
     * @param equalizerLevels 所有的等级数据
     */
    @Override
    public void onLevelChangeFinished(short[] equalizerLevels) {
        EqualizerHandler.INSTANCE.updateEqualizerArgs(this.usingEqualizerName, equalizerLevels);
    }

    /**
     * 储存均衡器配置对话框对象
     */
    private class SavingEqzDialog {

        private final EditText editText;
        private final AlertDialog alertDialog;

        private SavingEqzDialog(final @NonNull Context context)


 d="M6,19a2.006,2.006,0,0,0,2,2h8a2.006,2.006,0,0,0,2-2V7H6ZM19,4H15.5l-1-1h-5l-1,1H5V6H19Z" fill="#252a2e" />
          </svg>
        </ModusButton>
        <ModusButton buttonStyle="borderless" size="small" ariaLabel="Edit" title="Edit" color="primary" disabled id="edit">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
            <path d="M0,0H24V24H0Z" fill="none" />
            <path d="M3,17.25V21H6.75L17.81,9.94,14.06,6.19ZM20.71,7.04a1,1,0,0,0,0-1.41L18.37,3.29a1,1,0,0,0-1.41,0L15.13,5.12l3.75,3.75,1.83-1.83Z" fill="#252a2e" />
          </svg>
        </ModusButton>
        <ModusButton buttonStyle="borderless" size="small" ariaLabel="Copy" title="Copy" color="primary" disabled id="copy">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
            <path d="M0,0H24V24H0Z" fill="none" />
            <path d="M16,1H4A2.006,2.006,0,0,0,2,3V17H4V3H16Zm3,4H8A2.006,2.006,0,0,0,6,7V21a2.006,2.006,0,0,0,2,2H19a2.006,2.006,0,0,0,2-2V7A2.006,2.006,0,0,0,19,5Zm0,16H8V7H19Z" fill="#252a2e" />
          </svg>
        </ModusButton>
        <ModusButton buttonStyle="borderless" size="small" ariaLabel="Drag" title="Drag" color="primary" disabled id="drag">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
            <path d="M11,18a2,2,0,1,1-2-2A2.006,2.006,0,0,1,11,18ZM9,10a2,2,0,1,0,2,2A2.006,2.006,0,0,0,9,10ZM9,4a2,2,0,1,0,2,2A2.006,2.006,0,0,0,9,4Zm6,4a2,2,0,1,0-2-2A2.006,2.006,0,0,0,15,8Zm0,2a2,2,0,1,0,2,2A2.006,2.006,0,0,0,15,10Zm0,6a2,2,0,1,0,2,2A2.006,2.006,0,0,0,15,16Z" fill="#252a2e" />
          </svg>
        </ModusButton>
        <ModusButton buttonStyle="borderless" size="small" ariaLabel="Expand" title="Expand" color="primary" disabled id="expand">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
            <path d="M0,0H24V24H0Z" fill="rgba(0,0,0,0)" />
            <path d="M12,5.83,15.17,9l1.41-1.41L12,3,7.41,7.59,8.83,9Zm0,12.34L8.83,15,7.42,16.41,12,21l4.59-4.59L15.17,15Z" fill="#252a2e" />
          </svg>
        </ModusButton>
        <ModusButton buttonStyle="borderless" size="small" ariaLabel="Collapse" title="Collapse" color="primary" disabled style={{ display: 'none' }} id="collapse">
          <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
            <path d="M0,0H24V24H0Z" fill="none" />


f89  = f0
	shr	L = L, 1
	}
	{ .mfb
	STFD	[C12] = f91, 3 * SIZE
	mov	f73  = f0
	nop	__LINE__
	}
	;;
#else
	FMPY	f64  = ALPHA, f64
	FMPY	f66  = ALPHA, f66
	FMPY	f65  = ALPHA, f65
	FMPY	f67  = ALPHA, f67
	FMPY	f72  = ALPHA, f72
	FMPY	f74  = ALPHA, f74
	FMPY	f73  = ALPHA, f73
	FMPY	f75  = ALPHA, f75
	;;
	{ .mfb
	STFD	[C1 ] = f64, SIZE
	FMPY	f80  = ALPHA, f80
	nop	__LINE__
	}
	{ .mfb
	STFD	[C9 ] = f66, SIZE
	FMPY	f82  = ALPHA, f82
	nop	__LINE__
	}
	;;
	{ .mfb
	STFD	[C1 ] = f65, 3 * SIZE
	FMPY	f81  = ALPHA, f81
	nop	__LINE__
	}
	{ .mfb
	STFD	[C9 ] = f67, 3 * SIZE
	FMPY	f83  = ALPHA, f83
	nop	__LINE__
	}
	;;
	{ .mfi
	STFD	[C2 ] = f72, SIZE
	FMPY	f88  = ALPHA, f88
#if defined(TRMMKERNEL) && \
    ((defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA)))
	sub	L = K, KK
#else
	nop	__LINE__
#endif
	}
	{ .mfb
	STFD	[C10] = f74, SIZE
	FMPY	f90  = ALPHA, f90
	nop	__LINE__
	}
	;;
	{ .mfi
	STFD	[C2 ] = f73, 3 * SIZE
	FMPY	f89  = ALPHA, f89
#if defined(TRMMKERNEL) && (defined(LEFT) &&  defined(TRANSA))
	adds	L = -4, L
#else
	nop	__LINE__
#endif
	}
	{ .mfi
	STFD	[C10] = f75, 3 * SIZE
	FMPY	f91  = ALPHA, f91
#if defined(TRMMKERNEL) && (!defined(LEFT) && !defined(TRANSA))
	adds	L = -4, L
#else
	nop	__LINE__
#endif
	}
	;;
	{ .mfi
	STFD	[C3 ] = f80, SIZE
	mov	f80  = f0
#if defined(TRMMKERNEL) && \
    ((defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA)))
	shladd	KK8 = L, BASE_SHIFT, r0
#else
	nop	__LINE__
#endif
	}
	{ .mfb
	STFD	[C11] = f82, SIZE
	mov	f64  = f0
	nop	__LINE__
	}
	;;
	{ .mfi
	STFD	[C3 ] = f81, 3 * SIZE
	mov	f81  = f0
#if defined(TRMMKERNEL) && \
    ((defined(LEFT) &&  defined(TRANSA)) || (!defined(LEFT) && !defined(TRANSA)))
	shladd	AOFFSET = KK8, 2, AOFFSET
#else
	nop	__LINE__
#endif
	}
	{ .mfi
	STFD	[C11] = f83, 3 * SIZE
	mov	f72  = f0
#if defined(TRMMKERNEL) && \
    ((defined(LEFT)


EFFF8 */  lh    $t6, -8($s1)
/* B1D76C 800A65CC A5AE0008 */  sh    $t6, 8($t5)
/* B1D770 800A65D0 862FFFFA */  lh    $t7, -6($s1)
/* B1D774 800A65D4 A5AF000A */  sh    $t7, 0xa($t5)
/* B1D778 800A65D8 9238FFFF */  lbu   $t8, -1($s1)
/* B1D77C 800A65DC A1B8000F */  sb    $t8, 0xf($t5)
/* B1D780 800A65E0 95790000 */  lhu   $t9, ($t3)
/* B1D784 800A65E4 03320019 */  multu $t9, $s2
/* B1D788 800A65E8 00007012 */  mflo  $t6
/* B1D78C 800A65EC 01CC7821 */  addu  $t7, $t6, $t4
/* B1D790 800A65F0 022F082B */  sltu  $at, $s1, $t7
/* B1D794 800A65F4 5420FFF0 */  bnezl $at, .L800A65B8
/* B1D798 800A65F8 96380000 */   lhu   $t8, ($s1)
/* B1D79C 800A65FC 94780002 */  lhu   $t8, 2($v1)
/* B1D7A0 800A6600 0018C900 */  sll   $t9, $t8, 4
/* B1D7A4 800A6604 03228021 */  addu  $s0, $t9, $v0
/* B1D7A8 800A6608 256B0010 */  addiu $t3, $t3, 0x10
.L800A660C:
/* B1D7AC 800A660C 0170082B */  sltu  $at, $t3, $s0
/* B1D7B0 800A6610 5420FFD8 */  bnezl $at, .L800A6574
/* B1D7B4 800A6614 8D6D0008 */   lw    $t5, 8($t3)
.L800A6618:
/* B1D7B8 800A6618 25290004 */  addiu $t1, $t1, 4
/* B1D7BC 800A661C 5533FFCB */  bnel  $t1, $s3, .L800A654C
/* B1D7C0 800A6620 8CAE0048 */   lw    $t6, 0x48($a1)
/* B1D7C4 800A6624 8FB00008 */  lw    $s0, 8($sp)
/* B1D7C8 800A6628 8FB1000C */  lw    $s1, 0xc($sp)
/* B1D7CC 800A662C 8FB20010 */  lw    $s2, 0x10($sp)
/* B1D7D0 800A6630 8FB30014 */  lw    $s3, 0x14($sp)
/* B1D7D4 800A6634 03E00008 */  jr    $ra
/* B1D7D8 800A6638 27BD0048 */   addiu $sp, $sp, 0x48


the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>
*/

package general_tests

import (
	"path"
	"testing"
	"time"

	"github.com/cgrates/birpc/context"
	v1 "github.com/cgrates/cgrates/apier/v1"
	"github.com/cgrates/cgrates/config"
	"github.com/cgrates/cgrates/engine"
	"github.com/cgrates/cgrates/utils"
)

// Start test wth combines rating plan
// destination for 1002 cost 1CNT and *any cost 10CNT

var sTestsTutorials2 = []func(t *testing.T){
	testDestinationLoadConfig,
	testDestinationResetDB,
	testDestinationStartEngine,
	testDestinationRpcConn,
	testDestinationFromFolder,
	testDestinationGetCostFor1002,
	testDestinationGetCostFor1003,
	testTutorialStopEngine,
}

func TestDestinationCombines(t *testing.T) {
	switch *utils.DBType {
	case utils.MetaInternal:
		tutorialConfDIR = "tutinternal"
	case utils.MetaMySQL:
		tutorialConfDIR = "tutmysql"
	case utils.MetaMongo:
		tutorialConfDIR = "tutmongo"
	case utils.MetaPostgres:
		t.SkipNow()
	default:
		t.Fatal("Unknown Database type")
	}
	for _, stest := range sTestsTutorials2 {
		t.Run(tutorialConfDIR, stest)
	}

}

func testDestinationLoadConfig(t *testing.T) {
	var err error
	tutorialCfgPath = path.Join(*utils.DataDir, "conf", "samples", tutorialConfDIR)
	if tutorialCfg, err = config.NewCGRConfigFromPath(tutorialCfgPath); err != nil {
		t.Error(err)
	}
	tutorialDelay = 2000

}

func testDestinationResetDB(t *testing.T) {
	if err := engine.InitDataDB(tutorialCfg); err != nil {
		t.Fatal(err)
	}
	if err := engine.InitStorDb(tutorialCfg); err != nil {
		t.Fatal(err)
	}
}

func testDestinationStartEngine(t *testing.T) {
	if _, err := engine.StopStartEngine(tutorialCfgPath, tutorialDelay); err != nil {
		t.Fatal(err)
	}
}

func testDestinationRpcConn(t *testing.T) {
	tutorialRpc = engine.NewRPCClient(t, tutorialCfg.ListenCfg())
}

func testDestinationFromFolder(t *testing.T) {
	var reply string
	attrs := &utils.AttrLoadTpFromFolder{FolderPath: path.Join(*utils.DataDir, "tariffplans", "tp_destination_with_any")}
	if err := tutorialRpc.Call(context.Background(), utils.APIerSv1LoadTariffPlanFromFolder, attrs, &reply); err != nil {
		t.Error(err)
	}
	time.Sleep(100 * time.Millisecond)
}

func testDestinationGetCostFor1002(t *testing.T) {
	attrs := v1.AttrGetCost{
		Tenant:      "cgrates.org",
		Category:    "call",
		Subject:     "1001",
		Destination: "1002",
		AnswerTime:  "*now",
		Usage:       "1m",
	}
	var rply *engine.EventCost
	if err := tutorialRpc.Call(context.Background(), utils.APIerSv1GetCost, &attrs, &rply); err != nil {
		t.Error("Unexpected error received: ", err.Error())
	} else if *rply


URN R0 0

MAIN:
  PREPVARARGS 0
  GETIMPORT R0 K1 [script]
  LOADK R2 K2 ["StreamingServiceDispatcherRegistry"]
  NAMECALL R0 R0 K3 ["FindFirstAncestor"]
  CALL R0 2 1
  GETIMPORT R1 K5 [require]
  GETTABLEKS R4 R0 K6 ["Src"]
  GETTABLEKS R3 R4 K7 ["Utils"]
  GETTABLEKS R2 R3 K8 ["CliAdapter"]
  CALL R1 1 1
  GETIMPORT R2 K5 [require]
  GETTABLEKS R4 R0 K6 ["Src"]
  GETTABLEKS R3 R4 K9 ["Types"]
  CALL R2 1 1
  GETTABLEKS R3 R1 K10 ["GetService"]
  LOADK R4 K11 ["ChatbotUIService"]
  CALL R3 1 1
  GETTABLEKS R4 R1 K10 ["GetService"]
  LOADK R5 K12 ["StreamingService"]
  CALL R4 1 1
  GETTABLEKS R5 R1 K10 ["GetService"]
  LOADK R6 K13 ["ConversationalAIAcceptanceService"]
  CALL R5 1 1
  DUPCLOSURE R6 K14 [PROTO_1]
  CAPTURE VAL R3
  CAPTURE VAL R4
  CAPTURE VAL R5
  RETURN R6 1


gi kursus-kursus
           di Maktab Teknik ketika itu adalah Gred I dan Gred II Sijil Persekolahan Cambridge atau Sijil Persekolahan Malaya dengan mendapat kredit dalam Bahasa
            Inggeris dan Matematik Asas. Keutamaan diberi kepada pelajar yang mendapat kredit dalam mata pelajaran Sains.

        Maktab Teknik, 1946. Pada sesi akademik 1965/1966,
        terdapat seramai 682 pelajar yang mengikuti pengajian sepenuh masa di Maktab Teknik. Pertambahan kemasukan pelajar adalah berkaitan langsung dengan perubahan
         dasar kerajaan yang menumpukan kepada aspek pembangunan ekonomi yang menekankan penggunaan teknologi. Selaras dengan perubahan ini, permintaan sumber manusia dalam bidang teknikal
         telah meningkat dengan mendadak. Maktab Teknik mula menjadi pilihan utama untuk melanjutkan pelajaran, lebih-lebih lagi dengan adanya pelbagai kemudahan pembelajaran yang moden dan lengkap.
         Pada tahun 1969, sebanyak 1300 permohonan kemasukan diterima tetapi hanya 280 tempat sahaja yang ditawarkan yang menjadikan jumlah enrolmen seramai 872 orang pelajar yang mengikuti pengajian
         sepenuh masa. Pada awal tahun 1971, Kementerian Pelajaran telah menubuhkan sebuah jawatankuasa untuk mengkaji rancangan menjadikan Maktab Teknik sebagai sebuah institusi teknologi bertaraf universiti.
          Jawatankuasa tersebut telah memperakukan penubuhan sebuah universiti dalam bidang teknologi yang menggunakan Bahasa Melayu sebagai bahasa penghantar. Pada 14 Mac 1972, DYMM Seri Paduka Baginda Yang DiPertuan Agong
           telah mengisytiharkan penubuhan Institusi Teknologi Kebangsaan (ITK) di bawah seksyen 6(1) Akta Universiti dan Kolej Universiti, 1971. ITK telah mewarisi semua prasarana pendidikan dan pentadbiran Maktab Teknik di
            kampus Jalan Gurney. Encik Ainuddin Abdul Wahid yang sebelum ini menjadi Pengetua Maktab Teknik telah dilantik sebagai Rektor ITK yang pertama.
        Selaras dengan perubahan statusnya, satu Majlis Sementara telah ditubuhkan untuk menggubal dasar-dasar utama pendidikan di ITK. Tiga jawatan utama juga diwujudkan, iaitu jawatan Pendaftar, Bendahari dan Ketua Pustakawan.

<!DOCTYPE html>

    <title>Universiti Tekn


e part of the code you'r interested in... of course Svd is right... and  I suspect

that

we are all by now so used to our huge *.alf dead listings that we simply don't always

remember that there's a special proud also

in being EFFECTIVE without any waste :-(
BTW: I'm using an old

Texas Instrument calculator  for

complex hexadecimal conversions as well (amazing how cheap are these little marvels

once they

are deemed 'obsolete' by the stupid commercial slaves)... way more effective than even

the best software...

Cracking cd1xedit.exe ver 1.23a
method used: "offline"

debugging
by: SvD

i cracked that proggy, at least removed the

annoyed nag start-screen.
Of course, dealing the way i do, one can go

further and find what-ever
else he wants. I'm not interested in

the crack as a

crack, but in the
method that I will call  "offline"

debugging.
I will try to explain ut here, coz i've used

it for many years with success.
This kind of cracking is very useful,

when you don't have proper tools AND
the proggie is

not self-checking/protected/compressed... OR
when you have all of them,

but they don't give any results :)

Tools i used:

* hiew.exe

5.15 - any hex editor + any disassembler will do;
Hiew just

incorporates both of them and saves the
annoing (copy bytes out,

disassemble, view) procedure;
* exehdr.exe 3.0  - exe dumper; '1992; use

/verbose option some;
* some hex/dec calculator - i use my Sharp coz i

have no resident one'
* BRAIN... nothing else

I have no SoftIce,

especialy for win; no ida; no wdasm. it will be nice
to have these tools,

but i would have to find them, to crack them, and
especially to LEARN

how tyo use them... and i'm too lazy

now...

(if u want, read my other essay at

fravia.org/bulg_1.htm

for
Data

Reversing Techniques. They are useful here)
As it was required, i'll

explain also how i guessed things right.

[the info i had up to now

was: the .exe is win16bit, with delphi
(i.e.Pascal), and some IceLock

protection (i've never heard of it)
But that info could be gathered

otherwise: 1) run the exehdr - it will
tell you that it is win 3.10 prog;

2) Look at any string table:
strings start with a byte of their size

(which means Pascal); 3) and
the proggie itself says that it is not win32s

compatible, and author
said may be soon will make it 32bit.]

copy

the cd1xedit.exe to have the original somewhere else,
for example copy it

as file zzzzz. You may need both the original and
the cracked

thing.


873.34 64 864 64H160c-9.35 0-17.02 3-23.01 8.99C131 78.99 128 86.66 128 96v832c0 9.35 2.99 17.02 8.99 23.01S150.66 960 160 960h704c9.35 0 17.02-2.99 23.01-8.99S896 937.34 896 928V96c0-9.35-3-17.02-8.99-23.01M192 896V128h96v768zm640 0H352V128h480z"}),x("path",{fill:"currentColor",d:"M480 512h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32m0 192h192c21.33 0 32-10.67 32-32s-10.67-32-32-32H480c-21.33 0-32 10.67-32 32s10.67 32 32 32"})]))}}),xI=EI,MI=I({name:"Menu",__name:"menu",setup(e){return(t,n)=>(b(),M("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[x("path",{fill:"currentColor",d:"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z"})]))}}),TI=MI,$I=I({name:"MessageBox",__name:"message-box",setup(e){return(t,n)=>(b(),M("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[x("path",{fill:"currentColor",d:"M288 384h448v64H288zm96-128h256v64H384zM131.456 512H384v128h256V512h252.544L721.856 192H302.144zM896 576H704v128H320V576H128v256h768zM275.776 128h472.448a32 32 0 0 1 28.608 17.664l179.84 359.552A32 32 0 0 1 960 519.552V864a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V519.552a32 32 0 0 1 3.392-14.336l179.776-359.552A32 32 0 0 1 275.776 128z"})]))}}),OI=$I,II=I({name:"Message",__name:"message",setup(e){return(t,n)=>(b(),M("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[x("path",{fill:"currentColor",d:"M128 224v512a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64V224zm0-64h768a64 64 0 0 1 64 64v512a128 128 0 0 1-128 128H192A128 128 0 0 1 64 736V224a64 64 0 0 1 64-64"}),x("path",{fill:"currentColor",d:"M904 224 656.512 506.88a192 192 0 0 1-289.024 0L120 224zm-698.944 0 210.56 240.704a128 128 0 0 0 192.704 0L818.944 224H205.056"})]))}}),AI=II,NI=I({name:"Mic",__name:"mic",setup(e){return(t,n)=>(b(),M("svg",{xmlns:"


t=":now() was called at:\n\n"..nt})or oc)end end;function nA.retry(da,ov,...)assert(type(da)=="function","Parameter #1 to Promise.retry must be a function")assert(type(ov)=="number","Parameter #2 to Promise.retry must be a number")local kx,nE={...},select("#",...)return nA.resolve(da(...)):catch(function(...)if ov>0 then return nA.retry(da,ov-1,unpack(kx,1,nE))else return nA.reject(...)end end)end;function nA.fromEvent(ow,nY)nY=nY or function()return true end;return nA._new(debug.traceback(nil,2),function(hy,nw,hz)local nD;local ox=false;local function oy()nD:Disconnect()nD=nil end;nD=ow:Connect(function(...)local oz=nY(...)if oz==true then hy(...)if nD then oy()else ox=true end elseif type(oz)~="boolean"then error("Promise.fromEvent predicate should always return a boolean")end end)if ox and nD then return oy()end;hz(function()oy()end)end)end;return nA end,newEnv("Orca.include.Promise"))()end)newModule("RuntimeLib","ModuleScript","Orca.include.RuntimeLib","Orca.include",function()return setfenv(function()local nA=require(script.Parent.Promise)local ez=game:GetService("RunService")local oA=game:GetService("ReplicatedFirst")local a={}a.Promise=nA;local function oB(fd)return ez:IsStudio()and fd:FindFirstAncestorWhichIsA("Plugin")~=nil end;function a.getModule(fd,oC,oD)if oD==nil then oD=oC;oC="@rbxts"end;if ez:IsRunning()and fd:IsDescendantOf(oA)then warn("roblox-ts packages should not be used from ReplicatedFirst!")end;if ez:IsRunning()and ez:IsClient()and not oB(fd)and not game:IsLoaded()then game.Loaded:Wait()end;local oE=script.Parent:FindFirstChild("node_modules")if not oE then error("Could not find any modules!",2)end;repeat local oF=fd:FindFirstChild("node_modules")if oF and oF~=oE then oF=oF:FindFirstChild("@rbxts")end;if oF then local oG=oF:FindFirstChild(oD)if oG then return oG end end;fd=fd.Parent until fd==nil or fd==oE;local oH=oE:FindFirstChild(oC or"@rbxts")return(oH or oE):FindFirstChild(oD)or error("Could not find module: "..oD,2)end;local oI={}local oJ={}function a.import(oK,oG,...)for k2=1,select("#",...)do oG=oG:WaitForChild(select(k2,...))end;if oG.ClassName~="ModuleScript"then error("Failed to import! Expected ModuleScript, got "..oG.ClassName,2)end;oI[oK]=oG;local oL=oG;local oM=0;while oL do oM=oM+1;oL=oI[oL]if oL==oG then local oN=oL.Name;for ev=1,oM do oL=oI[oL]oN=oN.."  ⇒ "..oL.Name end;error("Failed to import! Detected a circular dependency chain: "..oN,2)end end;if not oJ[oG]then if _G[oG]then error("Invalid module access! Do you have two TS runtimes trying to import this? "..oG:GetFullName(),2)end;_G[oG]=a;oJ[oG]=true end;local hG=require(oG)if oI[oK]==oG then oI[oK]=nil end;return hG end;function a.instanceof(hV,oO)if type(oO)=="table"and type(oO.instanceof)=="function"then return oO.instanceof(hV)end;if type(hV)=="table"then hV