_out:s_p_out+3], s[s_out_offset+24] offen offset:0
    buffer_load_short_d16 v[v_gld_a+27], v[v_out_os], s[s_p_out:s_p_out+3], s[s_out_offset+25] offen offset:0
    buffer_load_short_d16 v[v_gld_a+28], v[v_out_os], s[s_p_out:s_p_out+3], s[s_out_offset+26] offen offset:0
    v_mfma_f32_32x32x8f16 a[a_c+16:a_c+31], v[v_a+10:v_a+11], v[v_b+4:v_b+5], a[a_c+16:a_c+31]     ; repeat:0x0, step:1x0, num_a_c:16
    buffer_load_short_d16 v[v_gld_a+29], v[v_out_os], s[s_p_out:s_p_out+3], s[s_out_offset+27] offen offset:0
    buffer_load_short_d16 v[v_gld_a+30], v[v_out_os], s[s_p_out:s_p_out+3], s[s_out_offset+28] offen offset:0
    buffer_load_short_d16 v[v_gld_a+31], v[v_out_os], s[s_p_out:s_p_out+3], s[s_out_offset+29] offen offset:0
    ds_read2_b64 v[v_a+4+0:v_a+4+3], v[v_tmp+4], offset0:128, offset1:160 ; load i_k:2 into local buffer 0, repeat 1
    s_waitcnt lgkmcnt(5)
    v_mfma_f32_32x32x8f16 a[a_c+32:a_c+47], v[v_a+8:v_a+9], v[v_b+6:v_b+7], a[a_c+32:a_c+47]     ; repeat:0x1, step:0x0, num_a_c:16
    v_add_u32 v[v_move_slice_n_idswo], s[s_move_slice_n_dswo], v[v_move_slice_n_idswo]
    v_cmpx_le_u32 vcc, s[s_wo], v[v_move_slice_n_idswo]
    v_subrev_u32 v[v_move_slice_n_idswo], s[s_wo], v[v_move_slice_n_idswo]
    v_add_u32 v[v_move_slice_n_idsho], 1, v[v_move_slice_n_idsho]
    s_mov_b64 exec, -1
    v_mfma_f32_32x32x8f16 a[a_c+48:a_c+63], v[v_a+10:v_a+11], v[v_b+6:v_b+7], a[a_c+48:a_c+63]     ; repeat:0x1, step:1x0, num_a_c:16
    v_add_u32 v[v_move_slice_n_idsho], s[s_move_slice_n_dsho], v[v_move_slice_n_idsho]
    v_cmpx_le_u32 vcc, s[s_ho], v[v_move_slice_n_idsho]
    v_subrev_u32 v[v_move_slice_n_idsho], s[s_ho], v[v_move_slice_n_idsho]


on.attributes.calculatedState)
end

function Texture_Colored:VarTexChanged()
	local icon = self.icon
	self:STATE(icon, icon.attributes.calculatedState)
end

local COLOR_UNLOCKED = {
	Color = "ffffffff",
	Texture = "",
	Gray = false,
}
function Texture_Colored:STATE(icon, stateData)
	local color
	if not TMW.Locked or not stateData then
		color = "ffffffff"
	else
		color = stateData.Color or "ffffffff"
	end

	local texture = stateData.Texture
	if texture and texture ~= "" then
		texture = TMW.COMMON.Textures:EvaluateTexturePath(texture, self, "VarTexChanged")
		self.texture:SetTexture(texture)
	else
		self.texture:SetTexture(icon.attributes.texture)
	end

	local c = TMW:StringToCachedRGBATable(color)

	if not (LMB and OnlyMSQ) then
		self.texture:SetVertexColor(c.r, c.g, c.b, 1)
	else
		self.texture:SetVertexColor(1, 1, 1, 1)
	end

	self.texture:SetDesaturated(c.flags and c.flags.desaturate or false)

	if LMB and ColorMSQ then
		-- This gets set by IconModule_IconContainer_Masque
		local normaltex = icon.normaltex
		if normaltex then
			normaltex:SetVertexColor(c.r, c.g, c.b, 1)
		end
	end
end

Texture_Colored:SetDataListener("CALCULATEDSTATE", Texture_Colored.STATE)

function Texture_Colored:TEXTURE(icon, texture)
	self:STATE(icon, icon.attributes.calculatedState)
end
Texture_Colored:SetDataListener("TEXTURE")

TMW:RegisterCallback("TMW_GLOBAL_UPDATE", function()
	ColorMSQ = TMW.db.profile.ColorMSQ
	OnlyMSQ = TMW.db.profile.OnlyMSQ
end)


          <script src='js/CityMap.js' ></script>
                <script src='js/WorldMap.js' ></script>
                <script src='js/QuadTree.js' ></script>
                <script src="js/three.min.js"></script>
                <script src='http://code.jquery.com/jquery-latest.js'></script>
                <link  href='css/style.css' type='text/css' rel='stylesheet'/>
            </head>
            <body onload="
                canvas=document.getElementById('worldmap')
                continentmap=new WorldMap({
                                seed:488510,
                                sites:9000,
                                canvas:canvas,
                                cities:[{seed:'488500',name:'Gillshall',relation:' 488500 + 488510  = 977010  is embargoing',size:'29',size_modifier:'-5'},
{seed:'488501',name:'Iremouth',relation:' 488501 + 488510  = 977011  is at war with',size:'29171',size_modifier:'10'},
{seed:'488502',name:'Libertyfield',relation:' 488502 + 488510  = 977012  is cordial towards ',size:'6803',size_modifier:'4'},
{seed:'488503',name:'Bellebridge',relation:' 488503 + 488510  = 977013  is watchful of',size:'3959',size_modifier:'2'},
{seed:'488504',name:'Coralains',relation:' 488504 + 488510  = 977014  is cautious of',size:'1007',size_modifier:'0'},
{seed:'488505',name:'Earstein',relation:' 488505 + 488510  = 977015  has strained relations with',size:'1358',size_modifier:'0'},
{seed:'488506',name:'Great Gilbnac Crest',relation:' 488506 + 488510  = 977016  is oblivious of',size:'543',size_modifier:'-3'},
{seed:'488507',name:'Iofun',relation:' 488507 + 488510  = 977017  is allied with',size:'151',size_modifier:'-4'},
{seed:'488508',name:'LeLiberdale',relation:' 488508 + 488510  = 977018  is on the verge of war with',size:'85',size_modifier:'-5'},
{seed:'488509',name:'Upper Bedana',relation:' 488509 + 488510  = 977019  is friendly with',size:'18732',size_modifier:'8'},
{seed:'488510',name:'Cortle',relation:' 488510 + 488510  = 977020  is distrustful of',size:'5714',size_modifier:'4'},
{seed:'488511',name:'Eaglenow',relation:' 488511 + 488510  = 977021  is in a trade war with',size:'3385',size_modifier:'1'},
{seed:'488512',name:'New Gilhall',relation:' 488512 + 488510  = 977022  is wary of ',size:'1324',size_modifier:'0'},
{seed:'488513',name:'Inndef Stone',relation:' 488513 + 488510  = 977023  has a neutral relationship with',size:'839',size_modifier:'-1'},
{seed:'488514',name:'Libary',relation:' 488514 + 488510  = 977024  is ready for war with',size:'124',size_modifier:'-4'},
{seed:'488515',name:'Baytop',relation:' 488515 + 488510  = 977025  is embargoing',size:'405',size_modifier:'-4'},
{seed:'488516',name:'Copperpar',relation:' 488516 + 488510  = 977026  is on the verge of war with',size:'53',size_modifier:'-5'},
{seed:'488517',name:'Duskholt',relation:' 488517 + 488510


      stop_playback = {
          group_name = "Transport",
          index = 3,
        },
        start_playback = {
          group_name = "Transport",
          index = 4,
        },
        edit_mode = {
          group_name = "Transport",
          index = 5,
        },
        metronome_toggle = {
          group_name = "MARKER",
          index = 1,
        },
      },
      options = {
      }
    },
    TrackSelector = {
      mappings = {
        prev_track = {
          group_name = "TRACK",
          index = 1,
        },
        next_track = {
          group_name = "TRACK",
          index = 2,
        },

      },
    },
    Recorder = {
      mappings = {
        recorders = {
          group_name = "Buttons3",
        },
        sliders = {
          group_name = "Faders",
        },
      },
    },
    Effect = {
      mappings = {
        parameters = {
          group_name = "Encoders",
        },
      },
      options = {
        include_parameters = 3,
      }
    },
    SwitchConfiguration = {
      mappings = {
        goto_previous = {
          group_name = "MARKER",
          index = 2,
        },
        goto_next = {
          group_name = "MARKER",
          index = 3,
        },
      }
    },
  }
}


import random
import datetime
from copy import deepcopy
from optimizer.workSchedule import Role, Section

class Modifier:
    def __init__(self, workSchedules: list):
        self.workSchedules = deepcopy(workSchedules)

    def modify(self):
        date = random.choice(self.workSchedules[0].get_work_schedule_range())
        section = random.choice([section for section in list(Section) if section not in [Section.OFF, Section.PTO]])

        role = None if section == Section.NER else Role.ICU if section == Section.ICU else Role.ER

        assigned_candidates = self.filter_assignable(date, Section.OFF, self.find_assigned(date, section))
        if len(assigned_candidates) == 0:
            return self.workSchedules
        assigned = random.choice(self.filter_assignable(date, Section.OFF, assigned_candidates))

        unassigned_candidates = self.filter_assignable(date, section, self.find_unassigned(date, role))
        if len(unassigned_candidates) == 0:
            return self.workSchedules
        unassigned = random.choice(unassigned_candidates)

        assigned.assign(date, Section.OFF)
        unassigned.assign(date, section)

        return self.workSchedules

    def find_assigned(self, date: datetime.date, section: Section):
        return [workSchedule for workSchedule in self.workSchedules if workSchedule.assign_of(date) == section]

    def find_unassigned(self, date: datetime.date, role: Role = None):
        if role == None:
            return [workSchedule for workSchedule in self.workSchedules if workSchedule.assign_of(date) == Section.OFF]
        else:
            return [workSchedule for workSchedule in self.workSchedules if workSchedule.assign_of(date) == Section.OFF and workSchedule.role == role]

    def filter_assignable(self, date: datetime.date, section: Section, workSchedules: list):
        return [workSchedule for workSchedule in workSchedules if workSchedule.can_assign(date, section)]


_doubleSpinBox_manualImpedanceColormapMax->value();

    for(int i = 0; i<numberItems; i++)
    {
        EEGoSportsElectrodeItem *item = (EEGoSportsElectrodeItem *) itemList.at(i);

        // find matrix index for given electrode name
        matIndex = m_qmElectrodeNameIndex[item->getElectrodeName()];
        impedanceValue = matValue[matIndex];

        // set new color and impedance value. Clip received impedance value if > predefined max impedance value
        if(impedanceValue>3*threshold || impedanceValue<0)
            impedanceValue = -1.0;
        //double scale = 0.000053;
        //cout << scale <<endl;
        //double valueScaledNormalized = (scale*impedanceValue)/(scale*impedanceValue+1);

        if(m_pUi->m_radioButton_Threshold->isChecked())
        {
            QColor thresholdColor;
            if(impedanceValue > 2*threshold)
            {
                thresholdColor.setRed(255);
                thresholdColor.setGreen(140);
            }
            else if(impedanceValue > threshold)
            {
                thresholdColor.setRed(255);
                thresholdColor.setGreen(255);
            }
            else if(impedanceValue > 0)
                thresholdColor.setGreen(255);
            else
                thresholdColor.setRed(255);
            item->setColor(thresholdColor);
        }
        else if(m_pUi->m_radioButton_Colormap->isChecked())
            item->setColor(m_cbColorMap->valueToJet(std::min(colormapmax,impedanceValue/colormapmax)));

        item->setImpedanceValue(impedanceValue);
    }

    m_qGScene->update(m_qGScene->itemsBoundingRect());
}

//=============================================================================================================

void EEGoSportsImpedanceWidget::initGraphicScene()
{
    // Clear all items from scene
    m_qGScene->clear();

    // Load standard layout file
//    LayoutLoader *asaObject = new LayoutLoader();
    QList<QVector<float> > elcLocation3D;
    QList<QVector<float> > elcLocation2D;
    QString unit;
    QStringList elcChannelNames;
    QString sElcFilePath = QString("../resources/general/3DLayouts/standard_waveguard66.elc");

    if(!LayoutLoader::readAsaElcFile(sElcFilePath, elcChannelNames, elcLocation3D, elcLocation2D, unit))
    {
        qDebug() << "Error: Reading elc file.";
        return;
    }

    // Generate lookup table for channel names to corresponding matrix/vector index
    for(int i = 0; i<elcLocation2D.size(); i++)
        m_qmElectrodeNameIndex.insert(elcChannelNames.at(i), i);

    // Add electrodes to scene
    for(int i = 0; i<elcLocation2D.size(); i++)
    {
        QVector2D position(elcLocation2D[i][1]*-4.5,elcLocation2D[i][0]*-4.5); // swap x y to rotate 90°, multiply to mirror by x and y axis, multiply by to scale
        addElectrodeItem(elcChannelNames.at(i), position);
    }

    m_pUi->m_graphicsView_impedanceView->fitInView(m_qGScene->itemsBoundingRect(), Qt::KeepAspectRatio);
}

//=============================================================================================================

void EEGoSportsImpedanceWidget::addElectrodeItem(const QString& electrodeName, const QVector2D& position)
{
    EEGoSportsElectrodeItem *item = new EEGoSportsElectrodeItem(electrodeName, QPointF(position.x(), position.y()), QColor(m_cbColorMap->valueToJet(1)), m_qmElectrodeNameIndex[electrodeName]);
    item->setPos(QPointF(position.x(), position.y()));
    m_qGScene->addItem(item);
}

//=============================================================================================================


\003\340A\001\022\021\n"
          + "\004skip\030\006 \001(\005B\003\340A\001\"\232\001\n"
          + "\037ListPrivateAuctionDealsResponse\022J\n"
          + "\025private_auction_deals\030\001"
          + " \003(\0132+.google.ads.admanager.v1.PrivateAuctionDeal\022\027\n"
          + "\017next_page_token\030\002 \001(\t\022\022\n\n"
          + "total_size\030\003 \001(\005\"\253\001\n"
          + "\037CreatePrivateAuctionDealRequest\0228\n"
          + "\006parent\030\001 \001(\tB(\340A\002\372A\"\n"
          + " admanager.googleapis.com/Network\022N\n"
          + "\024private_auction_deal\030\002 \001(\013"
          + "2+.google.ads.admanager.v1.PrivateAuctionDealB\003\340A\002\"\247\001\n"
          + "\037UpdatePrivateAuctionDealRequest\022N\n"
          + "\024private_auction_deal\030\001 \001(\0132+.g"
          + "oogle.ads.admanager.v1.PrivateAuctionDealB\003\340A\002\0224\n"
          + "\013update_mask\030\002"
          + " \001(\0132\032.google.protobuf.FieldMaskB\003\340A\0022\340\007\n"
          + "\031PrivateAuctionDealService\022\267\001\n"
          + "\025GetPrivateAuctionDeal\0225.google.ads.admanager.v1.GetPrivateAuction"
          + "DealRequest\032+.google.ads.admanager.v1.Pr"
          + "ivateAuctionDeal\":\332A\004name\202\323\344\223\002-\022+/v1/{name=networks/*/privateAuctionDeals/*}\022\312\001\n"
          + "\027ListPrivateAuctionDeals\0227.google.ads.admanager.v1.ListPrivateAuctionDealsReques"
          + "t\0328.google.ads.admanager.v1.ListPrivateA"
          + "uctionDealsResponse\"<\332A\006parent\202\323\344\223\002-\022+/v"
          + "1/{parent=networks/*}/privateAuctionDeals\022\352\001\n"
          + "\030CreatePrivateAuctionDeal\0228.google.ads.admanager.v1.CreatePrivateAuctionDea"
          + "lRequest\032+.google.ads.admanager.v1.Priva"
          + "teAuctionDeal\"g\332A\033parent,private_auction"
          + "_deal\202\323\344\223\002C\"+/v1/{parent=networks/*}/pri"
          + "vateAuctionDeals:\024private_auction_deal\022\205\002\n"
          + "\030UpdatePrivateAuctionDeal\0228.google.ads.admanager.v1.UpdatePrivateAuctionDealRe"
          + "quest\032+.google.ads.admanager.v1.PrivateAuctionDeal\"\201\001\332A"
          + " private_auction_deal,update_mask\202\323\344\223\002X2@/v1/{private_auction_dea"
          + "l.name=networks/*/privateAuctionDeals/*}"
          + ":\024private_auction_deal\032G\312A\030admanager.goo"
          + "gleapis.com\322A)https://www.googleapis.com/auth/admanagerB\322\001\n"
          + "\033com.google.ads.admanager.v1B\036PrivateAuctionDealServiceProtoP"
          + "\001Z@google.golang.org/genproto/googleapis"
          + "/ads/admanager/v1;admanager\252\002\027Google.Ads"
          + ".AdManager.V1\312\002\027Google\\Ads\\AdManager\\V1\352"
          + "\002\032Google::Ads::AdManager::V1b\006proto3"
    };
    descriptor =
        com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
            descriptorData,
            new com.google.protobuf.Descriptors.FileDescriptor[] {
              com.google.ads.admanager.v1.PrivateAuctionDealMessagesProto.getDescriptor(),


/div>

				Tournament Level Breakdown

				Grand Slam

							50% (10-10)

				Opposition Breakdown

				Vs No. 1

							50% (10-10)

				Round Breakdown

				Final

							50% (10-10)

		GOAT Points <a th:href="@{/playerProfile(playerId


return {
	id = "WorldG112",
	events = {
		{
			code = {
				"playStory"
			},
			stories = {
				"GWORLDX112A"
			}
		},
		{
			alpha = 0.3,
			style = {
				text = "在塞壬要塞海域中，该区域会实时显示敌方剩余的据点数。",
				mode = 2,
				dir = 1,
				char = "1",
				posY = 0,
				posX = 508.1
			},
			showSign = {
				type = 2,
				signList = {
					{
						signType = 4
					}
				},
				clickUI = {
					path = "OverlayCamera/Overlay/UIMain/top/adapt/rig


]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, s2 quad_perm:[3,2,1,0]
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x00,0x00,0x01,0x1b,0x00,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, 10 quad_perm:[3,2,1,0]
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x14,0x01,0x00,0x01,0x1b,0x00,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 quad_perm:[0,1,2,3]
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0xe4,0x00,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_mirror
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0x40,0x01,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_half_mirror
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0x41,0x01,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_shl:1
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0x01,0x01,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_shl:15
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0x0f,0x01,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_shr:1
// W32: [0x05,0x00,0x31,0xd4,0xfa,0x04,0x02,0x00,0x01,0x11,0x01,0xff]
// W64-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: invalid operand for instruction

v_cmp_lt_i16_e64_dpp s5, v1, v2 row_shr:15
// W32: [0x05,0x00,0x3


 TextButton.styleFrom(
                                padding: EdgeInsets.zero,
                                minimumSize: const Size(0, 0),
                                tapTargetSize: MaterialTapTargetSize.shrinkWrap,
                              ),
                              child: Text(
                                AppLocalizations.of(context)!.register,
                                style: TextStyle(
                                  color: Color.fromRGBO(76, 65, 39, 1),
                                  fontSize: getResponsiveFontSize(context, 15),
                                ),
                              ),
                            ),
                          ],
                        ),
                      ),
                      SizedBox(height: getResponsiveHeight(context, 2)),
                    ],
                  ),
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}import './recipe_complexity.dart';
import './technical_difficulty.dart';
import './recipe_entry.dart';

class EntrySearchCriteria {
	Set<RecipeComplexity>? complexitySet;
	Set<TechnicalDifficulty>? difficultySet;
	Map<String,int>? prepTimeRange;
	Map<String,int>? cookTimeRange;
	Map<String,int>? addiTimeRange;
	Map<String,int>? ratingRange;
  String? servingsText;
  String? nameText;
  String? notesText;
	Set<int>? tagIdSet;

	EntrySearchCriteria();

	bool _isWithinRange(int a, Map<String,int> range) {
		return ((range['from'] == -1) || (a >= range['from']!)) && ((range['to'] == -1) || (a <= range['to']!));
	}

	bool fitsCriteria(RecipeEntry entry) {
		final criterionList = <bool>[];

		if (complexitySet != null) {
			criterionList.add(complexitySet!.contains(entry.complexity));
		}
		if (difficultySet != null) {
			criterionList.add(difficultySet!.contains(entry.difficulty));
		}

		if (prepTimeRange != null) {
			criterionList.add(_isWithinRange(entry.prepTimeMins, prepTimeRange!));
		}
		if (cookTimeRange != null) {
			criterionList.add(_isWithinRange(entry.cookTimeMins, cookTimeRange!));
		}
		if (addiTimeRange != null) {
			criterionList.add(_isWithinRange(entry.addiTimeMins, addiTimeRange!));
		}
		if (ratingRange != null) {
			criterionList.add(_isWithinRange(entry.rating.round(), ratingRange!));
		}

		if (servingsText != null) {
			criterionList.add(entry.servings.contains(RegExp(servingsText!, caseSensitive: false)));
		}
		if (nameText != null) {
			criterionList.add(entry.name.contains(RegExp(nameText!, caseSensitive: false)));
		}
		if (notesText != null) {
			criterionList.add(entry.notes.contains(RegExp(notesText!, caseSensitive: false)));
		}

		if (tagIdSet != null) {
			criterionList.add(tagIdSet!.intersection(entry.tagIds).isNotEmpty);
		}

		if (criterionList.isEmpty) return false;

		return !criterionList.contains(false);
	}
}import 'package:flutter/material.dart';
import 'package:provider/provider.dart';

import '../../providers/recipe_tag_list.dart';
import '../../models/recipe_tag.dart';
import './tag_edit_alert_dialog.dart';

class DisplayTagList extends StatelessWidget {
	final List<RecipeTag> tagList;
	final bool isInEditMode;
	final Function selectTagFn;
	final Function longPressSelectTagFn;
	final Set<int> selectedTags;

	const DisplayTagList({
		required this.tagList,
		requ


    font-size: 50px;
  }
}
header.devices-on-right {
  position: relative;
  width: 100%;
  min-height: auto;
  overflow-y: hidden;
  background: url('../img/bg-pattern.png'), #663FB5;
  background: url('../img/bg-pattern.png'), -webkit-linear-gradient(to left, #663FB5, #2B8BE3);
  /* Chrome 10-25, Safari 5.1-6 */
  background: url('../img/bg-pattern.png'), linear-gradient(to left, #663FB5, #2B8BE3);
  /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
  color: white;
}
@media (max-width: 768px) {
  header.devices-on-right {
    padding-bottom: 30px;
  }
}
header.devices-on-right .container > .row {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  flex-wrap: wrap;
}
header.devices-on-right .container > .row::before {
  display: block;
}
header.devices-on-right .container > .row > [class*="col-"] {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
header.devices-on-right .container > .row > div {
  vertical-align: middle !important;
}
header.devices-on-right .header-content {
  text-align: center;
  padding: 150px 0 50px;
  position: relative;
  width: 100%;
}
header.devices-on-right .header-content .header-content-inner {
  position: relative;
  max-width: 500px;
  margin: 0 auto;
}
header.devices-on-right .header-content .header-content-inner h1 {
  font-family: 'Nunito', sans-serif;
  font-weight: 100;
  margin-top: 0;
  margin-bottom: 30px;
  font-size: 30px;
}
header.devices-on-right .devices-container img {
  width: 100%;
}
@media (min-width: 768px) {
  header.devices-on-right {
    min-height: 90%;
  }
  header.devices-on-right .header-content {
    text-align: left;
    padding: 0;
    height: 90vh;
    min-height: 600px;
  }
  header.devices-on-right .header-content .header-content-inner {
    max-width: none;
    margin: 0;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
  }
  header.devices-on-right .header-content .header-content-inner h1 {
    font-size: 35px;
  }
}
@media (min-width: 992px) {
  header.devices-on-right .header-content .header-content-inner h1 {
    font-size: 50px;
  }
}
header.bottom-laptop {
  position: relative;
  width: 100%;
  min-height: auto;
  overflow-y: hidden;
  background: url('../img/bg-pattern.png'), #663FB5;
  background: url('../img/bg-pattern.png'), -webkit-linear-gradient(to left, #663FB5, #2B8BE3);
  /* Chrome 10-25, Safari 5.1-6 */
  background: url('../img/bg-pattern.png'), linear-gradient(to left, #663FB5, #2B8BE3);
  /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
  color: white;
  height: 90vh;
}
header.bottom-laptop .header-content {
  text-align: center;
  padding: 150px 0 50px;
  position


m_usbHandle[0], 0, &d->m_usbHandle[1]);
	else
	{
#ifdef XSENS_DEBUG
		DWORD err = GetLastError();
		assert(result);
#endif
		return (d->m_lastResult = XRV_ERROR);
	}

	for (int k = 0; k < 2; k++)
	{
		if (result)
		{
			assert(d->m_usbHandle[k] != 0);
			length = sizeof(UCHAR);
			result = d->m_winUsb.QueryDeviceInformation(d->m_usbHandle[k], DEVICE_SPEED, &length, &speed);
		}

		if (result)
		{
			d->m_deviceSpeed = speed;
			result = d->m_winUsb.QueryInterfaceSettings(d->m_usbHandle[k], 0, &interfaceDescriptor);
		}
		if (result)
		{
			for (int i = 0; i < interfaceDescriptor.bNumEndpoints; i++)
			{
				result = d->m_winUsb.QueryPipe(d->m_usbHandle[k], 0, (UCHAR) i, &pipeInfo);

				if (pipeInfo.PipeType == UsbdPipeTypeBulk && USB_ENDPOINT_DIRECTION_IN(pipeInfo.PipeId))
				{
					d->m_bulkInPipe = pipeInfo.PipeId;
					d->m_bulkInPipePacketSize =
						pipeInfo.MaximumPacketSize;
				}
				else if (pipeInfo.PipeType == UsbdPipeTypeBulk && USB_ENDPOINT_DIRECTION_OUT(pipeInfo.PipeId))
					d->m_bulkOutPipe = pipeInfo.PipeId;
				else if (pipeInfo.PipeType == UsbdPipeTypeInterrupt)
					d->m_interruptPipe = pipeInfo.PipeId;
				else
				{
					result = FALSE;
					break;
				}
			}
		}
	}

	setTimeout(0);
	flushData();

	sprintf(d->m_portname, "%s", portInfo.portName_c_str());

	//	d->m_offset = 0;
	::ResetEvent(&d->m_quitEvent);
	d->m_threadHandle = xsStartThread(usbReadThreadFunc, d, &d->m_threadId);
	if (d->m_threadHandle == XSENS_INVALID_THREAD)
	{
#ifdef XSENS_DEBUG
		assert(0);
#endif
		return (d->m_lastResult = XRV_ERROR);
	}

#elif defined(HAVE_LIBUSB)
	libusb_device** deviceList;
	ssize_t listLength = d->m_contextManager.m_libUsb.get_device_list(d->m_contextManager.m_usbContext, &deviceList);
	if (listLength < 0)
		return d->m_lastResult = d->libusbErrorToXrv((int)listLength);

	// "USBxxx:yyy"
	uint8_t bus = XsPortInfo_usbBus(&portInfo);
	uint8_t address = XsPortInfo_usbAddress(&portInfo);

	XsResultValue xrv = XRV_OK;
	int result;
	libusb_device* device = NULL;
	for (int i = 0; i < listLength && device == NULL; ++i)
	{
		libusb_device* dev = deviceList[i];
		if (d->m_contextManager.m_libUsb.get_bus_number(dev) != bus || d->m_contextManager.m_libUsb.get_device_address(dev) != address)
			continue;

		libusb_device_descriptor desc;
		result = d->m_contextManager.m_libUsb.get_device_descriptor(dev, &desc);
		if (result != LIBUSB_SUCCESS)
			break;

		libusb_config_descriptor* configDesc;
		result = d


         isEnd = false;
          }
          totalReadFrames += readResult.frameCount;
          left -= readResult.frameCount;
        }

        _mixerFunc(busBuffer, buffer, totalReadFrames);
        maxReadFrames = max(totalReadFrames, maxReadFrames);
      }

      return AudioReadResult(frameCount: maxReadFrames, isEnd: isEnd);
    });

    if (isClampEnabled) {
      buffer.clamp(frames: result.frameCount);
    }

    return result;
  }
}

class MixerNodeException implements Exception {
  const MixerNodeException.connectedInputBus()
      : message = 'input bus is connected to another bus',
        code = -1;

  const MixerNodeException.invalidBus()
      : message = 'the bus is not associated to this node',
        code = -2;

  final String message;
  final int code;

  @override
  String toString() {
    return 'MixerNodeException(code: $code, message: $message)';
  }
}
import 'dart:ffi' as ffi;

import 'package:coast_audio/coast_audio.dart';
import 'package:coast_audio/src/codec/wav/wav_chunk.dart';
import 'package:coast_audio/src/ffi_extension.dart';

class WavAudioEncoder extends AudioEncoder {
  WavAudioEncoder({
    required this.dataSource,
    required this.inputFormat,
    Memory? memory,
  }) : memory = memory ?? Memory();
  final AudioOutputDataSource dataSource;

  final Memory memory;

  var _isStarted = false;

  @override
  final AudioFormat inputFormat;

  @override
  bool get isStarted => _isStarted;

  static const _riffSizeOffset = 4;

  int get _dataSizeOffset {
    final chunkLength = ffi.sizeOf<WavChunk>();
    final riffLength = ffi.sizeOf<WavRiffData>();
    final fmtLength = ffi.sizeOf<WavFmtData>();

    return (chunkLength + riffLength) + (chunkLength + fmtLength) + 4;
  }

  @override
  void start() {
    final chunkLength = ffi.sizeOf<WavChunk>();
    final pChunk = memory.allocator.allocate<WavChunk>(chunkLength);

    final riffLength = ffi.sizeOf<WavRiffData>();
    final pRiffData = memory.allocator.allocate<WavRiffData>(riffLength);

    final fmtLength = ffi.sizeOf<WavFmtData>();
    final pFmtData = memory.allocator.allocate<WavFmtData>(fmtLength);

    try {
      dataSource.position = 0;

      {
        pChunk.ref.id.setAsciiString('RIFF', nullTerminated: false);
        pChunk.ref.size = 0;
        dataSource.writeBytes(pChunk.cast<ffi.Uint8>().asTypedList(chunkLength));

        pRiffData.ref.format.setAsciiString('WAVE', nullTerminated: false);
        dataSource.writeBytes(pRiffData.cast<ffi.Uint8>().asTypedList(riffLength));
      }

      {
        pChunk.ref.id.setAsciiString('fmt ', nullTerminated: false);
        pChunk.ref.size = fmtLength;
        dataSource.writeBytes(pChunk.cast<ffi.Uint8>().asTypedList(chunkLength));

        switch (inputFormat.sampleFormat) {
          case SampleFormat.uint8:
          case SampleFormat.int16:
          case SampleFormat.int32:
            pFmtData.ref.encodingFormat = 1;
            break;
          default:
            throw WavFormatException('unsupported sample format');
        }

        pFmtData.ref.channels = inputFormat.channels;
        pFmtData.ref.sampleRate = inputFormat.sampleRate;
        pFmtData.ref.bytesPerSecond = inputFormat.sampleRate * inputFormat.channels * inputFormat.sampleFormat.size;


 stype = source.as_mut().extract_source_type();
        let stat_buf = match stype {
            SourceType::Statx(_, buf) => buf,
            _ => panic!("Source type is wrong for describe operation"),
        };
        Ok(stat_buf.into_inner())
    }

    /// Returns the size of a file, in bytes
    pub async fn file_size(&self) -> Result<u64> {
        let st = self.statx().await?;
        Ok(st.stx_size)
    }

    /// Closes this DMA file.
    pub async fn close(&mut self) -> Result<()> {
        let source = Reactor::get().close(self.as_raw_fd());
        enhanced_try!(source.collect_rw().await, "Closing", self)?;
        self.file = unsafe { std::fs::File::from_raw_fd(-1) };
        Ok(())
    }
}

#[cfg(test)]
enum TestDirectoryKind {
    TempFs,
    StorageMedia,
}

#[cfg(test)]
fn make_test_directories(test_name: &str) -> std::vec::Vec<(PathBuf, TestDirectoryKind)> {
    let mut vec: std::vec::Vec<(PathBuf, TestDirectoryKind)> = Vec::new();

    // Scipio currently only supports NVMe-backed volumes formatted with XFS or EXT4.
    // We therefore let the user decide what directory scipio should use to host the unit tests in.
    // For more information regarding this limitation, see the README
    match std::env::var("SCIPIO_TEST_POLLIO_ROOTDIR") {
        Err(_) => {
            eprintln!(
                "Scipio currently only supports NVMe-backed volumes formatted with XFS \
                or EXT4. To run poll io-related tests, please set SCIPIO_TEST_POLLIO_ROOTDIR to a \
                NVMe-backed directory path in your environment.\nPoll io tests will not run."
            );
        }
        Ok(path) => {
            let mut dir = PathBuf::from(path);
            std::assert!(dir.exists());

            dir.push(test_name);
            let _ = std::fs::remove_dir_all(&dir);
            std::fs::create_dir_all(&dir).unwrap();
            vec.push((dir, TestDirectoryKind::StorageMedia))
        }
    };

    let mut dir = std::env::temp_dir();
    dir.push(test_name);
    let _ = std::fs::remove_dir_all(&dir);
    std::fs::create_dir_all(&dir).unwrap();
    vec.push((dir, TestDirectoryKind::TempFs));
    return vec;
}

#[test]
fn fallback_drop_closes_the_file() {
    let paths = make_test_directories("fallback_drop_closes_the_file");

    for (path, _) in paths {
        test_executor!(async move {
            let fd;
            {
                let file = DmaFile::create(path.join("testfile"))
                    .await
                    .expect("failed to create file");
                fd = file.as_raw_fd();
                std::fs::remove_file(path.join("testfile")).unwrap();
            }
            assert!(fd != -1);
            let ret = unsafe { libc::close(fd) };
            assert_eq!(ret, -1);
            let err = std::io::Error::last_os_error().raw_os_error().unwrap();
            assert_eq!(err, libc::EBADF);
        });
    }
}

#[test]
fn file_create_close() {
    let paths = make_test_directories("io_file_create_close");

    for (path, _) in paths {
        test_executor!(async move {
            let mut new_file = DmaFile::create(path.join("testfile"))
                .await
                .expect("failed to create file");
            new_file.close().await.expect("failed to close file");

            std::assert!(path.join("testfile").exists());
        });
    }
}

#[test]
fn file_open() {
    let paths = make_te


PATCH_SWITCH(                               \
      TYPE, NAME, AT_DISPATCH_CASE(at::ScalarType::Float, __VA_ARGS__))

#define FBGEMM_DISPATCH_FLOAT_AND_HALF(TYPE, NAME, ...) \
  AT_DISPATCH_SWITCH(                                   \
      TYPE, NAME, FBGEMM_DISPATCH_FLOAT_AND_HALF_CASE(__VA_ARGS__))

#define FBGEMM_DISPATCH_FLOAT_HALF_AND_BYTE(TYPE, NAME, ...) \
  AT_DISPATCH_SWITCH(                                        \
      TYPE,                                                  \
      NAME,                                                  \
      FBGEMM_DISPATCH_FLOAT_AND_HALF_CASE(__VA_ARGS__)       \
          AT_DISPATCH_CASE(at::ScalarType::Byte, __VA_ARGS__))

#define FBGEMM_DISPATCH_FLOATING_TYPES(TYPE, NAME, ...) \
  AT_DISPATCH_SWITCH(                                   \
      TYPE, NAME, FBGEMM_DISPATCH_FLOATING_TYPES_CASE(__VA_ARGS__))

#define FBGEMM_DISPATCH_FLOATING_TYPES_AND(SCALARTYPE, TYPE, NAME, ...) \
  AT_DISPATCH_SWITCH(                                                   \
      TYPE,                                                             \
      NAME,                                                             \
      FBGEMM_DISPATCH_FLOATING_TYPES_CASE(__VA_ARGS__)                  \
          AT_DISPATCH_CASE(SCALARTYPE, __VA_ARGS__))

#define FBGEMM_DISPATCH_INTEGRAL_TYPES(TYPE, NAME, ...) \
  AT_DISPATCH_SWITCH(                                   \
      TYPE, NAME, FBGEMM_DISPATCH_INTEGRAL_TYPES_CASE(__VA_ARGS__))

#define FBGEMM_DISPATCH_ALL_TYPES(TYPE, NAME, ...)     \
  AT_DISPATCH_SWITCH(                                  \
      TYPE,                                            \
      NAME,                                            \
      FBGEMM_DISPATCH_FLOATING_TYPES_CASE(__VA_ARGS__) \
          FBGEMM_DISPATCH_INTEGRAL_TYPES_CASE(__VA_ARGS__))

// We can cleanup the following once fbgemm uses PyTorch 2.2 in January 2024.
#ifndef PT2_COMPLIANT_TAG
#ifdef HAS_PT2_COMPLIANT_TAG
#define PT2_COMPLIANT_TAG at::Tag::pt2_compliant_tag
#else
#define PT2_COMPLIANT_TAG
#endif
#endif


(/rc/#vfs-queue) to show the status of the upload queue (Nick Craig-Wood)
    - Add [vfs/queue-set-expiry](/rc/#vfs-queue-set-expiry) to adjust expiry of items in the VFS queue (Nick Craig-Wood)
    - Add `--unix-socket` option to `rc` command (Florian Klink)
    - Prevent unmount rc command from sending a `STOPPING=1` sd-notify message (AThePeanut4)
  - rcserver: Implement [prometheus metrics](/docs/#metrics) on a dedicated port (Oleg Kunitsyn)
  - serve dlna
    - Also look at "Subs" subdirectory (Florian Klink)
    - Don't swallow `video.{idx,sub}` (Florian Klink)
    - Set more correct mime type (Florian Klink)
  - serve nfs
    - Implement on disk cache for file handles selected with `--nfs-cache-type` (Nick Craig-Wood)
    - Add tracing to filesystem calls (Nick Craig-Wood)
    - Mask unimplemented error from chmod (Nick Craig-Wood)
    - Unify the nfs library logging with rclone's logging better (Nick Craig-Wood)
    - Fix incorrect user id and group id exported to NFS (Nick Craig-Wood)
  - serve s3
    - Implement `--auth-proxy` (Sawjan Gurung)
    - Update to AWS SDKv2 by updating `github.com/rclone/gofakes3` (Nick Craig-Wood)
- Bug Fixes
  - bisync: Fix sync time problems with backends that round time (eg Dropbox) (nielash)
  - serve dlna: Fix panic: invalid argument to Int63n (Nick Craig-Wood)
- VFS
  - Add [--vfs-read-chunk-streams](/commands/rclone_mount/#vfs-read-chunk-streams-0-1) to parallel read chunks from files (Nick Craig-Wood)
    - This can increase mount performance on high bandwidth or large latency links
  - Fix cache encoding with special characters (URenko)
- Local
  - Fix encoding of root path fix (URenko)
  - Add server-side copy (using clone) with xattrs on macOS (nielash)
    - `--local-no-clone` flag to disable cloning for server-side copies (nielash)
  - Support setting custom `--metadata` during server-side Copy (nielash)
- Azure Blob
  - Allow anonymous access for public resources (Nick Craig-Wood)
- B2
  - Include custom upload headers in large file info (Pat Patterson)
- Drive
  - Fix copying Google Docs to a backend which only supports SHA1 (Nick Craig-Wood)
- Fichier
  - Fix detection of Flood Detected error (Nick Craig-Wood)
  - Fix server side move (Nick Craig-Wood)
- HTTP
  - Reload client certificates on expiry (Saleh Dindar)
  - Support listening on passed FDs (Florian Klink)
- Jottacloud
  - Fix setting of metadata on server side move (albertony)
- Onedrive
  - Fix nil pointer error when uploading small files (Nick Craig-Wood)
- Pcloud
  - Implement `SetModTime` (Georg Welzel)
  - Implement `OpenWriterAt` feature to enable multipart uploads (Georg Welzel)
  - Fix failing large file uploads (Georg Welzel)
- Pikpak
  - Improve data consistency by ensuring async tasks complete (wiserain)
  - Implement custom hash to replace wrong sha1 (wiserain)
  - Fix error with `copyto` command (wiserain)
  - Optimize file move by removing unnecessary `readMetaData()` call (wiserain)
  - Non-buffered hash calculation for local source files (wiserain)
  - Optimize upload by pre-fetching gcid from API (wiserain)
  - Correct file transfer progress for uploads by hash (wiserain)
  - Update to using AWS SDK v2 (wiserain)
- S3
  - Update to using AWS SDK v2 (Nick Craig-Wood)
    - Add `--s3


ROC) load("glTexParameterIiv");
	glad_glTexParameterIuiv                = (PFNGLTEXPARAMETERIUIVPROC) load("glTexParameterIuiv");
	glad_glGetTexParameterIiv              = (PFNGLGETTEXPARAMETERIIVPROC) load("glGetTexParameterIiv");
	glad_glGetTexParameterIuiv             = (PFNGLGETTEXPARAMETERIUIVPROC) load("glGetTexParameterIuiv");
	glad_glSamplerParameterIiv             = (PFNGLSAMPLERPARAMETERIIVPROC) load("glSamplerParameterIiv");
	glad_glSamplerParameterIuiv            = (PFNGLSAMPLERPARAMETERIUIVPROC) load("glSamplerParameterIuiv");
	glad_glGetSamplerParameterIiv          = (PFNGLGETSAMPLERPARAMETERIIVPROC) load("glGetSamplerParameterIiv");
	glad_glGetSamplerParameterIuiv         = (PFNGLGETSAMPLERPARAMETERIUIVPROC) load("glGetSamplerParameterIuiv");
	glad_glTexBuffer                       = (PFNGLTEXBUFFERPROC) load("glTexBuffer");
	glad_glTexBufferRange                  = (PFNGLTEXBUFFERRANGEPROC) load("glTexBufferRange");
	glad_glTexStorage3DMultisample         = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC) load("glTexStorage3DMultisample");
}
static int find_extensionsGLES2(void)
{
	if (!get_exts())
		return 0;
	GLAD_GL_EXT_memory_object       = has_ext("GL_EXT_memory_object");
	GLAD_GL_EXT_memory_object_fd    = has_ext("GL_EXT_memory_object_fd");
	GLAD_GL_EXT_memory_object_win32 = has_ext("GL_EXT_memory_object_win32");
	GLAD_GL_EXT_semaphore           = has_ext("GL_EXT_semaphore");
	GLAD_GL_EXT_semaphore_fd        = has_ext("GL_EXT_semaphore_fd");
	GLAD_GL_EXT_semaphore_win32     = has_ext("GL_EXT_semaphore_win32");
	GLAD_GL_KHR_debug               = has_ext("GL_KHR_debug");
	free_exts();
	return 1;
}

static void find_coreGLES2(void)
{
	/* Thank you @elmindreda
     * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176
     * https://github.com/glfw/glfw/blob/master/src/context.c#L36
     */
	int i, major, minor;

	const char *version;
	const char *prefixes[] = {
	    "OpenGL ES-CM ",
	    "OpenGL ES-CL ",
	    "OpenGL ES ",
	    NULL};

	version = (const char *) glGetString(GL_VERSION);
	if (!version)
		return;

	for (i = 0; prefixes[i]; i++)
	{
		const size_t length = strlen(prefixes[i]);
		if (strncmp(version, prefixes[i], length) == 0)
		{
			version += length;
			break;
		}
	}

/* PR #18 */
#ifdef _MSC_VER
	sscanf_s(version, "%d.%d", &major, &minor);
#else
	sscanf(version, "%d.%d", &major, &minor);
#endif

	GLVersion.major        = major;
	GLVersion.minor        = minor;
	max_loaded_major       = major;
	max_loaded_minor       = minor;
	GLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2;
	GLAD_GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3;
	GLAD_GL_ES_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3;
	GLAD_GL_ES_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3;
	if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 2))
	{
		max_loaded_major = 3;
		max_loaded_minor = 2;
	}
}

int gladLoadGLES2Loader(GLADloadproc load)
{
	GLVersion.major = 0;
	GLVersion.minor = 0;
	glGetString     = (PFNGLGETSTRINGPROC) load("glGetString");
	if (glGetString == NULL)
		return 0;
	if (glGetString(GL_VERSION) == NULL)
		return 0;
	find_coreGLES2();
	load_GL_ES_VERSION_2_0(load);
	load_GL_ES_VERSION_3_0(load);
	load_GL_ES_VERSION_3_1(load);
	load_GL_ES_VERSION_3_2(load);

	if (!find_extensionsGLES2())
		return 0;
	load_GL_EXT_memory_object(load);
	load_GL_EXT_memory_object_fd(load);
	load_GL_EXT_memory_object_win32(load);
	load_GL_EXT_semaphore(load);
	load_GL_EXT_semaphore_fd(load);
	load_GL_EXT_semaphore_win32(load);
	load_GL_KHR_debug(load);
	return GLVersion.major != 0 || GLVersion.minor != 0;
}


transform: matrix(1,0,0,1,0,0);
    }
}

@-webkit-keyframes hacktober-info {
    0% {
        letter-spacing: -0.5em;
        -webkit-transform: translateZ(-700px);
        transform: translateZ(-700px);
        opacity: 0;
    }

    40% {
        opacity: 0.6;
    }

    100% {
        -webkit-transform: translateZ(0);
        transform: translateZ(0);
        opacity: 1;
    }
}

@keyframes hacktober-info {
    0% {
        letter-spacing: -0.5em;
        -webkit-transform: translateZ(-700px);
        transform: translateZ(-700px);
        opacity: 0;
    }

    40% {
        opacity: 0.6;
    }

    100% {
        -webkit-transform: translateZ(0);
        transform: translateZ(0);
        opacity: 1;
    }
}@import url('https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@500;700;900&family=Inter:wght@400;500;700&display=fallback');

/*
! tailwindcss v3.1.6 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
    box-sizing: border-box;
    /* 1 */
    border-width: 0;
    /* 2 */
    border-style: solid;
    /* 2 */
    border-color: #e4e4e7;
    /* 2 */
}

::before,
::after {
    --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
*/

html {
    line-height: 1.5;
    /* 1 */
    -webkit-text-size-adjust: 100%;
    /* 2 */
    -moz-tab-size: 4;
    /* 3 */
    -o-tab-size: 4;
    tab-size: 4;
    /* 3 */
    font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji',
        'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
    /* 4 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
    margin: 0;
    /* 1 */
    line-height: inherit;
    /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
    height: 0;
    /* 1 */
    color: inherit;
    /* 2 */
    border-top-width: 1px;
    /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
    -webkit-text-decoration: underline dotted;
    text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
    font-size: inherit;
    font-weight: inher


eaver_로 무엇을 구축하는지.\n' +
      '\n' +
      '**왜 Weaver가 필요한가?** GPT와 같은 일반주의 LLM은 이미 일반적인 글쓰기 기술을 보유하고 있으며 다양한 글쓰기 시나리오에서 수십억 명의 사용자를 돕고 있음에도 불구하고, 글쓰기 이야기, 소설, 소셜 미디어 복사본, 블로그, 논문/논문 등과 같은 특정 글쓰기 시나리오에서 인간과 유사한 텍스트를 생산하는데 어려움을 겪는 경우가 많다. 우리는 LLaMA와 같은 사전 훈련된 베이스 LLM 및 ChatGPT 및 LLaMA-채팅과 같은 정렬된 LLM의 거동을 분석하고 이러한 제한이 사전 훈련 단계와 정렬 단계 모두에서 기인한다고 믿는다. 한편으로 일반주의 LLM은 대규모 저품질 웹 텍스트 또는 기계/AI 생성 텍스트에 대해 사전 교육을 받는다. 결과적으로 기존의 LLM 백본은 창의적이지 않고 인간과 유사한 스타일이 없는 겉보기에 유창한 텍스트를 생성하는 경향이 있다. 한편, 정렬 스테이지 동안, GPT-4와 같은 최첨단 LLM들은 크라우드소스 주석자들에 의해 주석된 명령-응답 쌍들을 사용하여 명령-튜닝된다(지 외, 2023; 쉔 외, 2023; Wang 외, 2023c). 그러나, 대부분의 주석자는 전문 작가나 콘텐츠 제작자가 아니며 주석 지침은 유용하고 무해한 응답을 만들어내기만 하면 된다(Ouyang et al., 2022b). 결과적으로, 감독 미세 조정을 위한 크라우드소싱 데이터는 덜 스타일리시하고 창의성이 부족하다. 또한, 가장 인기 있는 선호도\n' +
      '\n' +
      '그림 1: WriteBench 상의 Weaver와 일반 LLMs의 비교.\n' +
      '\n' +
      'RLHF 및 DPO와 같은 최적화 방법은 모델 생성 데이�


 as *const libc::c_void), false)
    }
}
<gh_stars>0
// This is not a standalone Rust module.  It gets processed by serde to
// generate serialization code and included directly into another module.

/// Indicates whether a pod is a regular service or a one-shot task.
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub enum PodType {
    /// A placeholder represents an externally-managed service, and it is
    /// generally only present in development mode.  This is mostly treated
    /// as though it were a service, but with different defaults in several
    /// places.
    #[serde(rename = "placeholder")]
    Placeholder,

    /// A service is normally started up and left running.
    #[serde(rename = "service")]
    Service,

    /// A task is run once and expected to exit.
    #[serde(rename = "task")]
    Task,
}

/// In addition to serde serialization, also provide basic formatting.
impl fmt::Display for PodType {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        match *self {
            PodType::Placeholder => write!(f, "placeholder"),
            PodType::Service => write!(f, "service"),
            PodType::Task => write!(f, "task"),
        }
    }
}

/// Configuration information about a pod.
#[derive(Debug, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
struct Config {
    /// Only use this pod in the specified targets.  If this field is
    /// omitted, we apply the plguin in all targets.
    enable_in_targets: Option<Vec<String>>,

    /// What kind of pod is this?
    pod_type: Option<PodType>,
}
// run-pass
#![allow(dead_code)]
// pretty-expanded FIXME #23616

enum Foo {
    A,
    B(isize),
    C { a: isize },
}

fn _foo (f: Foo) {
    match f {
        Foo::A | Foo::B(_) | Foo::C { .. } => {}
    }
}

pub fn main() {}
use super::error::ConvertError;
use serde::{Deserialize, Serialize};
use std::str::FromStr;

#[derive(Serialize, Deserialize, Debug)]
pub(crate) enum Subject {
  #[serde(rename = "ページング")]
  Paging,
  #[serde(rename = "表示")]
  Required,
  #[serde(rename = "表示条件1")]
  DisplayConditionFirst,
  #[serde(rename = "表示条件2")]
  DisplayConditionSecond,
  #[serde(rename = "表示条件3")]
  DisplayConditionThird,
  #[serde(rename = "タイプ")]
  Type,
  #[serde(rename = "最大")]
  Max,
  #[serde(rename = "最小")]
  Min,
  #[serde(rename = "ラベル")]
  Label,
  #[serde(rename = "プレースホルダ")]
  Placeholder,
  #[serde(rename = "入力指定")]
  InputSpec,
  #[serde(rename = "数字入力指定範囲(例：10~90)")]
  NumInputSpec,
  #[serde(rename = "入力指定エラー文言")]
  NumInputSpecError,
  #[serde(rename = "プルダウン")]
  Options,
}

impl FromStr for Subject {
  type Err = ConvertError;

  fn from_str(s: &str) -> Result<Self, Self::Err> {
    match s {
      "ページング" => Ok(Subject::Paging),
      "表示" => Ok(Subject::Required),
      "表示条件1" => Ok(Subject::DisplayConditionFirst),
      "表示条件2" => Ok(Subject::DisplayConditionSecond),
      "表示条件3" => Ok(Subject::DisplayConditionThird),


= _FeedbackState.none;

  void _provideFeedback({required bool helpful}) {
    if (!kIsWeb) return;

    setState(
      () => feedback = helpful
          ? _FeedbackState.helpful
          : _FeedbackState.unhelpful,
    );
    analytics.sendFeedback(helpful);
  }

  @override
  Component build(BuildContext context) {
    return div(id: 'page-feedback', [
      div(classes: 'feedback', [
        div([Component.text(feedback.introduction)]),
        ...switch (feedback) {
          _FeedbackState.none => [
            div(classes: 'feedback-buttons', [
              Button(
                icon: 'thumb_up',
                title: 'Yes, this page was helpful.',
                onClick: () => _provideFeedback(helpful: true),
              ),
              Button(
                icon: 'thumb_down',
                title: 'No, this page was not helpful or had an issue',
                onClick: () => _provideFeedback(helpful: false),
              ),
            ]),
          ],
          _FeedbackState.helpful => [
            Button(
              content: 'Provide details',
              icon: 'feedback',
              title: 'Provide detailed feedback.',
              href: component.issueUrl,
              attributes: {'target': '_blank', 'rel': 'noopener'},
            ),
          ],
          _FeedbackState.unhelpful => [
            Button(
              content: 'Provide details',
              icon: 'bug_report',
              title: 'Provide feedback or report an issue.',
              href: component.issueUrl,
              attributes: {'target': '_blank', 'rel': 'noopener'},
            ),
          ],
        },
      ]),
    ]);
  }
}

enum _FeedbackState {
  none('Was this page\'s content helpful?'),
  helpful('Thank you for your feedback!'),
  unhelpful(
    'Thank you for your feedback! '
    'Please let us know what we can do to improve.',
  );

  const _FeedbackState(this.introduction);

  final String introduction;
}
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:jaspr/jaspr.dart';

import '../util.dart';
import 'material_icon.dart';

/// A set of Material Design-like chips for configuration.
class ChipSet extends StatelessComponent {
  const ChipSet(this.chips, {this.resettable = false});

  final List<Component> chips;
  final bool resettable;

  @override
  Component build(BuildContext context) => div(classes: 'chip-set', [
    ...chips,
    if (resettable)
      button(
        id: 'reset-filters',
        classes: 'text-button',
        [text('Clear filters')],
      ),
  ]);
}

class InfoChip extends StatelessComponent {
  const InfoChip({
    super.key,
    required this.label,
    this.icon,
    this.iconPath,
    this.iconSize = 18,
    this.iconViewBox = '0 0 18 18',
    this.title,
    this.classes,
    this.attributes,
  });

  final String label;
  final String? icon;
  final String? iconPath;
  final int iconSize;
  final String iconViewBox;
  final String? title;
  final List<String>? classes;
  final Map<String, String>? attributes;

  @override
  Component build(BuildContext context) {
    final chipClasses = ['chip', 'info-chip', ...?classes];

    return div(
      classes: chipClasses.toClasses,
      attributes: attributes,
      [
        if (


	}{{
		in:  NULL,
		out: nil,
	}, {
		in:  testVal(Int8, "1"),
		out: int64(1),
	}, {
		in:  testVal(Int16, "1"),
		out: int64(1),
	}, {
		in:  testVal(Int24, "1"),
		out: int64(1),
	}, {
		in:  testVal(Int32, "1"),
		out: int64(1),
	}, {
		in:  testVal(Int64, "1"),
		out: int64(1),
	}, {
		in:  testVal(Uint8, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Uint16, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Uint24, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Uint32, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Uint64, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Float32, "1"),
		out: float64(1),
	}, {
		in:  testVal(Float64, "1"),
		out: float64(1),
	}, {
		in:  testVal(Timestamp, "2012-02-24 23:19:43"),
		out: []byte("2012-02-24 23:19:43"),
	}, {
		in:  testVal(Date, "2012-02-24"),
		out: []byte("2012-02-24"),
	}, {
		in:  testVal(Time, "23:19:43"),
		out: []byte("23:19:43"),
	}, {
		in:  testVal(Datetime, "2012-02-24 23:19:43"),
		out: []byte("2012-02-24 23:19:43"),
	}, {
		in:  testVal(Year, "1"),
		out: uint64(1),
	}, {
		in:  testVal(Decimal, "1"),
		out: []byte("1"),
	}, {
		in:  testVal(Text, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(Blob, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(VarChar, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(VarBinary, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(Char, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(Binary, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(Bit, "1"),
		out: []byte("1"),
	}, {
		in:  testVal(Enum, "a"),
		out: []byte("a"),
	}, {
		in:  testVal(Set, "a"),
		out: []byte("a"),
	}}
	for _, tcase := range testcases {
		v := tcase.in.ToNative()
		if !reflect.DeepEqual(v, tcase.out) {
			t.Errorf("%v.ToNative = %#v, want %#v", makePretty(tcase.in), v, tcase.out)
		}
	}
}

func TestToProtoValue(t *testing.T) {
	got := testVal(Int64, "1").ToProtoValue()
	want := &querypb.Value{
		Type:  Int64,
		Value: []byte("1"),
	}
	if !reflect.DeepEqual(got, want) {
		t.Errorf("bindvar: %v, want %v", got, want)
	}
}

func TestPanics(t *testing.T) {
	testcases := []struct {
		in  Value
		out string
	}{{
		in:  testVal(Int64, InvalidNeg),
		out: "out of range",
	}, {
		in:  testVal(Uint64, InvalidPos),
		out: "


us rapide

La mission de Cloudflare est d'aider à construire un Internet meilleur. Nous l'avons fait en sécurisant des millions de propriétés Internet et en améliorant leur performance depuis que nous avons lancé WARP il y a 9 ans, quasiment jour pour jour. WARP renforce la mission de Cloudflare en étendant notre réseau pour rendre le mobile de chaque consommateur un peu plus sûr. Notre équipe est fière de ce que nous avons créé avec WARP, même si nous sommes un peu gênés du temps qu’il a fallu pour que WARP arrive entre vos mains. Nous espérons que vous nous pardonnerez ce retard, que vous prendrez le temps d’essayer WARP et que vous nous donnerez votre avis.

			<svg style="height:64px;padding:5px;max-width:100%" enable-background="new 0 0 135 40.5" viewBox="0 0 135 40.5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
				<linearGradient id="a" gradientUnits="userSpaceOnUse" x1="21.77" x2="4.9876" y1="8.68" y2="25.4624">
					<stop offset="0" stop-color="#00a0ff"></stop>
					<stop offset=".00657445" stop-color="#00a1ff"></stop>
					<stop offset=".2601" stop-color="#00beff"></stop>
					<stop offset=".5122" stop-color="#00d2ff"></stop>
					<stop offset=".7604" stop-color="#00dfff"></stop>
					<stop offset="1" stop-color="#00e3ff"></stop>
				</linearGradient>
				<linearGradient id="b" gradientUnits="userSpaceOnUse" x1="33.8344" x2="9.6375" y1="20.05" y2="20.05">
					<stop offset="0" stop-color="#ffe000"></stop>
					<stop offset=".4087" stop-color="#ffbd00"></stop>
					<stop offset=".7754" stop-color="#ffa500"></stop>
					<stop offset="1" stop-color="#ff9c00"></stop>
				</linearGradient>
				<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="24.8155" x2="2.0572" y1="22.2845" y2="45.0428">
					<stop offset="0" stop-color="#ff3a44"></stop>
					<stop offset="1" stop-color="#c31162"></stop>
				</linearGradient>
				<linearGradient id="d" gradientUnits="userSpaceOnUse" x1="7.2617" x2="17.4243" y1=".2118" y2="10.3743">
					<stop offset="0" stop-color="#32a071"></stop>
					<stop offset=".0685" stop-color="#2da771"></stop>
					<stop offset=".4762" stop-color="#15cf74"></stop>
					<stop offset=".8009" stop-color="#06e775"></stop>
					<stop offset="1" stop-color="#00f076"></stop>
				</linearGradient>
				<path d="m130 40h-125c-2.8 0-5-2.2-5-5v-30c0-2.8 2.2-5 5-5h125c2.8 0 5 2.2 5 5v30c0 2.7-2.2 5-5 5z"></path>
				<path d="m130 .8c2.3 0 4.2 1.9 4.2 4.2v30c0 2.3-1.9 4.2-4.2 4.2h-125c-2.3 0-4.2-1.9-4.2-4.2v-30c0-2.3 1.9-4.2 4.2-4.2zm0-.8h-125c-2.8 0-5 2.2-5 5v30c0 2.


ListFor(ListKey.TEMPLATE))
			{
				for (PCTemplate pct : ref.getContainedObjects())
				{
					addTemplate(pct);
				}
			}
			for (CDOMReference<PCTemplate> ref : cMod.getSafeListFor(ListKey.REMOVE_TEMPLATES))
			{
				for (PCTemplate pct : ref.getContainedObjects())
				{
					removeTemplate(pct);
				}
			}

			for (TransitionChoice<Kit> kit : cMod.getSafeListFor(ListKey.KIT_CHOICE))
			{
				kit.act(kit.driveChoice(this), cMod, this);
			}
		}
		calcActiveBonuses();
		setDirty(true);
	}

	/**
	 * Returns the maximum number of followers this character can have from
	 * the given companion list. This method does not adjust for any followers
	 * already selected by the character.
	 *
	 * @param cList
	 *            A list of potential follower races
	 * @return The max number of followers -1 for any number
	 */
	public int getMaxFollowers(CompanionList cList)
	{
		int ret = followerLimitFacet.getMaxFollowers(id, cList);
		return (ret == -1) ? getOldFollowerLimit(cList) : ret;
	}

	private int getOldFollowerLimit(CompanionList cList)
	{
		// Old way of handling this
		// If the character qualifies for any companion mod of this type
		// they can take unlimited number of them.
		for (CompanionMod cMod : Globals.getContext().getReferenceContext().getManufacturerId(cList).getAllObjects())
		{
			Map<String, Integer> varmap = cMod.getMapFor(MapKey.APPLIED_VARIABLE);
			for (String varName : varmap.keySet())
			{
				if (this.getVariableValue(varName, Constants.EMPTY_STRING).intValue() > 0)
				{
					return -1;
				}
			}
			Map<CDOMSingleRef<? extends PCClass>, Integer> ac = cMod.getMapFor(MapKey.APPLIED_CLASS);
			for (Map.Entry<CDOMSingleRef<? extends PCClass>, Integer> me : ac.entrySet())
			{
				PCClass pcclass = me.getKey().get();
				String key = pcclass.getKeyName();
				for (PCClass pcClass : getClassSet())
				{
					if (pcClass.getKeyName().equals(key))
					{
						return me.getValue();
					}
				}
			}
		}

		return 0;
	}

	/**
	 * Get the PlayerCharacter that is the "master" for this object.
	 *
	 * @return master PC
	 */
	public PlayerCharacter getMasterPC()
	{
		Follower followerMaster = masterFacet.get(id);
		if (followerMaster == null)
		{
			return null;
		}

		for (PlayerCharacter nPC : Globals.getPCList())
		{
			if (followerMaster.getFileName().equals(nPC.getFileName()))
			{
				return nPC;
			}
		}

		// could not find a filename match, let's try the Name
		for (PlayerCharacter nPC : Globals.getPCList())
		{
			if (followerMaster.getName().equals(nPC.getName()))
			{
				return nPC;
			}
		}

		// no Name and no FileName match, so must not be loaded
		return null;
	}

	/**
	 * Sets the character's name.
	 *
	 * @param aString
	 *            A name to set.
	 */
	public final void setName(final String aString)
	{
		setStringFor(PCStringKey.NAME, aString);
	}

	/**
	 * Gets the character's name.
	 *
	 * @return The name
	 */
	public String getName()
	{
		return getSafeStringFor(PCStringKey.NAME);
	}

	/**
	 * Takes all the Temporary Bonuses and Merges them into just the unique
	 * named bonuses.
	 *
	 * @return List of Strings
	 */
	public List<String> getNamed


: 0% -150px;
}

DIV.tabs LI#current A
{
   background-position: 100% -150px;
   border-width     : 0px;
}

DIV.tabs LI#current SPAN
{
   background-position: 0% -150px;
   padding-bottom   : 6px;
}

DIV.nav
{
   background       : none;
   border           : none;
   border-bottom    : 1px solid #84B0C7;
}
/* flow editor css */

#flow input {
  font-weight: 300;
}

#flow.dragging * {
  user-select: none;
  pointer-events: none;
}

html {
  --font-family: 'Roboto', Helvetica, Arial, sans-serif;
  --primary-rgb: 35, 135, 202;
  --secondary-rgb: 140, 51, 140;
  --tertiary-rgb: 135, 202, 35;

  --focus-rgb: 82, 168, 236;
  --error-rgb: 255, 99, 71;
  --success-rgb: 102, 186, 104;

  --selection-light-rgb: 240, 240, 240;
  --selection-dark-rgb: 180, 180, 180;

  --select-input-height: inherit;

  --curvature: 6px;
  --curvature-widget: 6px;
  --color-focus: #a4cafe;
  --color-widget-bg: #fff;
  --color-widget-bg-focused: #fff;
  --color-widget-border: rgb(225, 225, 225);

  --color-options-bg: var(--color-widget-bg);

  /* primary colors, should be dark */
  --color-selection: #f0f6ff;
  --color-row-hover: rgba(var(--selection-light-rgb), 0.4);

  --widget-box-shadow-focused: 0 0 0 3px rgba(164, 202, 254, 0.45);
  --widget-box-shadow-focused-error: 0 0 0 3px rgba(var(--error-rgb), 0.3);

  --shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
  --shadow-widget: 0 3px 20px 0 rgba(0, 0, 0, 0.04), 0 1px 2px 0 rgba(0, 0, 0, 0.02);

  /* page text, borders, widgets */
  --color-text: #555;
  --color-widget-text: #555;
  --color-borders: rgba(0, 0, 0, 0.07);
  --color-placeholder: #ccc;

  /* light colors, panel backgrounds, selection, etc */
  --color-primary-light: #eee;
  --color-secondary-light: #ccc;

  /* dark colors, nav bar, buttons, etc */
  --color-primary-dark: rgb(var(--primary-rgb));
  --color-secondary-dark: rgb(var(--secondary-rgb));

  --color-available: #00f100;

  --color-tertiary: rgb(var(--tertiary-rgb));

  /* light text goes over dark, dark over lights */
  --color-text-light: rgba(255, 255, 255, 1);
  --color-text-dark: rgba(0, 0, 0, 0.5);
  --color-text-dark-secondary: rgba(0, 0, 0, 0.25);

  /* solid overlays with text */
  --color-overlay-dark: rgba(0, 0, 0, 0.2);
  --color-overlay-dark-text: rgba(255, 255, 255, 0.9);
  --color-overlay-light: rgba(0, 0, 0, 0.035);
  --color-overlay-light-text: rgba(0, 0, 0, 0.6);

  /* links, buttons, and label badges */
  --color-link-primary: rgba(var(--primary-rgb), 0.8);
  --color-


画布，画的内容，保存为一个Bitmap。
* clipRect(float left, float top, float right, float bottom): 设置显示区域，即设置裁剪区。
* translate(float x, float  y): 平移画布。
* rotate(float degree, float px, float py):  旋转画布 。
* skew(float sx, float sy):  设置偏移量。
* save(): 将Canvas当前状态保存在堆栈，save之后可以调用Canvas的平移、旋转、错切、剪裁等操作。
* restore(): 恢复为之前堆栈保存的Canvas状态，防止save后对Canvas执行的操作对后续的绘制有影响。restore和save要配对使用，restore可以比save少，但不能比save多，否则会引发error。save和restore之间，往往夹杂的是对Canvas的特殊操作。
* save(int num)：将Canvas当前状态保存在堆栈，并予以编号int
* restoreToCount(int num)：恢复为之前堆栈保存的编号为int的Canvas状态
* concat(Matrix matrix)：画布关联矩阵，画出来的内容按矩阵改变，而不是画布改变。
* Drawable.draw(Canvas canvas)：将Drawable画到Canvas中
注：这种方式画Drawable怎么设置透明度呢？((BitmapDrawable)Drawable).getPaint().setAlpha(mBgAlpha);
2.2 画图【重点】

画图部分
*  canvas.drawPaint(Paint paint)
将画笔设置的颜色和透明度铺满画布
* drawRect(RectF rect, Paint paint)
绘制矩形，参数一为RectF一个区域
* drawRect(float left, float top, float right, float bottom, Paint paint)
绘制矩形，left:矩形left的x坐标，top:矩形top的y坐标，right:矩形right的x坐标，bottom:矩形bottom的y坐标
* drawRoundRect(RectF rect, float rx, float ry, Paint paint)
绘制圆角矩形， rx:x方向的圆角半径，ry:y方向的圆角半径
* drawRoundRect(float left, float top, float right, float bottom, float rx, float ry, Paint paint)
* drawPath(Path path, Paint paint)
绘制一个路径，参数一为Path路径对象
* drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)
贴图，参数一就是我们常规的Bitmap对象，参数二是源区域(这里是bitmap)，参数三是目标区域(应该在canvas的位置和大小)，参数四是Paint画刷对象，因为用到了缩放和拉伸的可能，当原始Rect不等于目标Rect时性能将会有大幅损失。
* drawBitmap (Bitmap bitmap, float left, float top, Paint paint)
* drawLine(float startX, float startY, float stopX, float stopY, Paintpaint)
画线，参数一起始点的x轴位置，参数二起始点的y轴位置，参数三终点的x轴水平位置，参数四y轴垂直位置，最后一个参数为Paint 画刷对象。
* drawPoint(float x, float y, Paint paint)
画点，参数一水平x轴，参数二垂直y轴，第三个参数为Paint对象。
* drawText(String text, float x, floaty, P


stinations
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow

class RecipeDetailViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {

    /**
     *   You can also access the arguments directly from the [SavedStateHandle].
     */
    private val detailRoute: RecipeDestinations.RecipeDetails = savedStateHandle.toRoute()

    private val _recipeDetails = MutableStateFlow<RecipeDetailState>(RecipeDetailState.Idle)

    val recipeDetails = _recipeDetails.asStateFlow()

    fun getRecipeById(id: Int) {

        // In a production app set up your repository as a constructor argument
        RecipeRepository.getRecipeById(id)?.let {

            _recipeDetails.value = RecipeDetailState.Success(it)

        } ?: {
            _recipeDetails.value = RecipeDetailState.Error("Recipe not found")
        }

    }

    fun toggleFavorite(id: Int, isFavorite: Boolean) {

        if (isFavorite) {
            RecipeRepository.removeFromFavorites(id)
        } else {
            RecipeRepository.addToFavorites(id)
        }

    }

}

sealed interface RecipeDetailState {
    data object Idle : RecipeDetailState
    data object Loading : RecipeDetailState
    data class Error(val message: String) : RecipeDetailState
    data class Success(val recipe: RecipeModel) : RecipeDetailState

}import io.sentry.android.gradle.extensions.InstrumentationFeature
import io.sentry.android.gradle.instrumentation.logcat.LogcatLevel
import java.util.Properties

val keystoreFile = project.rootProject.file("local.properties")
val properties = Properties()
properties.load(keystoreFile.inputStream())

val sentryDsn = properties.getProperty("SENTRYDSN") ?: ""
val githubClientKey = properties.getProperty("GITHUBCLIENTKEY") ?: ""
val githubSecret = properties.getProperty("GITHUBSECRET") ?: ""
val sentryAuthToken = properties.getProperty("SENTRYAUTHTOKEN") ?: ""

plugins {
    alias(libs.plugins.gitissuesmobile.application.compose)
    alias(libs.plugins.gitissuesmobile.android.hilt)

    alias(libs.plugins.google.gms.google.services)
    alias(libs.plugins.google.firebase.crashlytics)
    alias(libs.plugins.kotlinX.serialization)
    alias(libs.plugins.sentry.kotlin.compiler)
    alias(libs.plugins.sentry.android)

    alias(libs.plugins.gitissuesmobile.android.application.jacoco)
}

android {
    namespace = "com.devmike.gitissuesmobile"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.devmike.gitissuesmobile"
        minSdk = 26
        targetSdk = 35
        versionCode = 1
        versionName = "1.0"
        buildConfigField("String", "GITHUBCLIENTKEY", "\"$githubClientKey\"")
        buildConfigField("String", "GITHUBSECRET", "\"$githubSecret\"")
        buildConfigField("String", "SENTRYDSN", "\"$sentryDsn\"")

        testInstrumentationRunner = "com.devmike.gitissuesmobile.CustomTestRunner"
    }

    testOptions {
        packaging {
            jniLibs {
                useLegacyPackaging = true
            }
            resources.excludes.add("META-INF/*")
        }
    }
    buildFeatures {
        buildConfig = true
    }
}
dependencies {
    implementation(projects.feature.repository)
    implementation(projects.feature.issues)
    implementation(libs.appauth)
    implementation(projects.core.datastore)
    implementation(projects.core.domain)
    implementation(libs.firebase.crashlytics)
    implementation(libs.firebase.analytics)
    implementation(libs.androidx.core.splashscreen)

    androidTestImplementation(libs.hilt.android.testing)
    kspAndroidTest(libs.hilt.compiler)

    debugIm


                        ));
                    }
                )*
                unreachable!("no subcommand matched")
            }
        }

        impl argh::SubCommands for #name {
            const COMMANDS: &'static [&'static argh::CommandInfo] = &[#(
                <#variant_ty_3 as argh::SubCommand>::COMMAND,
            )*];
        }
    }
}

/// Returns `Some(Bar)` if the field is a single-field unnamed variant like `Foo(Bar)`.
/// Otherwise, generates an error.
fn enum_only_single_field_unnamed_variants<'a>(
    errors: &Errors,
    variant_fields: &'a syn::Fields,
) -> Option<&'a syn::Type> {
    macro_rules! with_enum_suggestion {
        ($help_text:literal) => {
            concat!(
                $help_text,
                "\nInstead, use a variant with a single unnamed field for each subcommand:\n",
                "    enum MyCommandEnum {\n",
                "        SubCommandOne(SubCommandOne),\n",
                "        SubCommandTwo(SubCommandTwo),\n",
                "    }",
            )
        };
    }

    match variant_fields {
        syn::Fields::Named(fields) => {
            errors.err(
                fields,
                with_enum_suggestion!(
                    "`#![derive(FromArgs)]` `enum`s do not support variants with named fields."
                ),
            );
            None
        }
        syn::Fields::Unit => {
            errors.err(
                variant_fields,
                with_enum_suggestion!(
                    "`#![derive(FromArgs)]` does not support `enum`s with no variants."
                ),
            );
            None
        }
        syn::Fields::Unnamed(fields) => {
            if fields.unnamed.len() != 1 {
                errors.err(
                    fields,
                    with_enum_suggestion!(
                        "`#![derive(FromArgs)]` `enum` variants must only contain one field."
                    ),
                );
                None
            } else {
                // `unwrap` is okay because of the length check above.
                let first_field = fields.unnamed.first().unwrap();
                Some(&first_field.ty)
            }
        }
    }
}
#![allow(unused_macros)]

use testcrate::*;

macro_rules! cmp {
    ($x:ident, $y:ident, $($unordered_val:expr, $fn:ident);*;) => {
        $(
            let cmp0 = if $x.is_nan() || $y.is_nan() {
                $unordered_val
            } else if $x < $y {
                -1
            } else if $x == $y {
                0
            } else {
                1
            };
            let cmp1 = $fn($x, $y);
            if cmp0 != cmp1 {
                panic!("{}({}, {}): std: {}, builtins: {}", stringify!($fn_builtins), $x, $y, cmp0, cmp1);
            }
        )*
    }


pre>

RunScenarios.sikuli\FeatureLoadOne.sikuli
 (Download this script)

click()
sleep(1.5)
hover()
sleep(1.5)
exit(0)


GetNextEquivalentPhiWithSameType() == nullptr)
            << "More then one phi equivalent with type " << phi->GetType()
            << " found for phi" << phi->GetId();
      }
    }
  }
}

void SsaBuilder::FixEnvironmentPhis() {
  for (HReversePostOrderIterator it(*graph_); !it.Done(); it.Advance()) {
    HBasicBlock* block = it.Current();
    for (HInstructionIterator it_phis(block->GetPhis()); !it_phis.Done(); it_phis.Advance()) {
      HPhi* phi = it_phis.Current()->AsPhi();
      // If the phi is not dead, or has no environment uses, there is nothing to do.
      if (!phi->IsDead() || !phi->HasEnvironmentUses()) continue;
      HInstruction* next = phi->GetNext();
      if (!phi->IsVRegEquivalentOf(next)) continue;
      if (next->AsPhi()->IsDead()) {
        // If the phi equivalent is dead, check if there is another one.
        next = next->GetNext();
        if (!phi->IsVRegEquivalentOf(next)) continue;
        // There can be at most two phi equivalents.
        DCHECK(!phi->IsVRegEquivalentOf(next->GetNext()));
        if (next->AsPhi()->IsDead()) continue;
      }
      // We found a live phi equivalent. Update the environment uses of `phi` with it.
      phi->ReplaceWith(next);
    }
  }
}

static void AddDependentInstructionsToWorklist(HInstruction* instruction,
                                               ArenaVector<HPhi*>* worklist) {
  // If `instruction` is a dead phi, type conflict was just identified. All its
  // live phi users, and transitively users of those users, therefore need to be
  // marked dead/conflicting too, so we add them to the worklist. Otherwise we
  // add users whose type does not match and needs to be updated.
  bool add_all_live_phis = instruction->IsPhi() && instruction->AsPhi()->IsDead();
  for (const HUseListNode<HInstruction*>& use : instruction->GetUses()) {
    HInstruction* user = use.GetUser();
    if (user->IsPhi() && user->AsPhi()->IsLive()) {
      if (add_all_live_phis || user->GetType() != instruction->GetType()) {
        worklist->push_back(user->AsPhi());
      }
    }
  }
}

// Find a candidate primitive type for `phi` by merging the type of its inputs.
// Return false if conflict is identified.
static bool TypePhiFromInputs(HPhi* phi) {
  Primitive::Type common_type = phi->GetType();

  for (HInputIterator it(phi); !it.Done(); it.Advance()) {
    HInstruction* input = it.Current();
    if (input->IsPhi() && input->AsPhi()->IsDead()) {
      // Phis are constructed live so if an input is a dead phi, it must have
      // been made dead due to type conflict. Mark this phi conflicting too.
      return false;
    }

    Primitive::Type input_type = HPhi::ToPhiType(input->GetType());
    if (common_type == input_type) {
      // No change in type.
    } else if (Primitive::Is64BitType(common_type) != Primitive::Is64BitType(input_type)) {
      // Types are of different sizes, e.g. int vs. long. Must be a conflict.
      return false;
    } else if (Primitive::IsIntegralType(common_type)) {
      // Previous inputs were integral, this one is not but is of the same size.
      // This does not imply conflict since some bytecode instruction types are
      // ambiguous. TypeInputsOfPhi will either type them or detect a conflict.
      DCHECK(Primitive::IsFloatingPointType(input_type) || input_type == Primitive::kPrimNot);
      common_type = input_type;
    } else if (Primitive::IsIntegralType


/ struct Data{
    //     Foo* node;
    // };
    // [[vk::push_constant]] Data pc;
    // [shader("compute")]
    // void main(uint3 threadId : SV_DispatchThreadID) {
    //     Foo a = pc.node[0];
    //     result[0] = a.x;
    // }
    const char *shader_source = R"(
               OpCapability PhysicalStorageBufferAddresses
               OpCapability Shader
               OpExtension "SPV_KHR_physical_storage_buffer"
               OpExtension "SPV_KHR_storage_buffer_storage_class"
               OpMemoryModel PhysicalStorageBuffer64 GLSL450
               OpEntryPoint GLCompute %main "main" %pc %result
               OpExecutionMode %main LocalSize 1 1 1
               OpDecorate %_ptr_PhysicalStorageBuffer_Foo_natural ArrayStride 8
               OpDecorate %Data_std430 Block
               OpMemberDecorate %Data_std430 0 Offset 0
               OpMemberDecorate %Foo_natural 0 Offset 0
               OpMemberDecorate %Foo_natural 1 Offset 4
               OpDecorate %_runtimearr_uint ArrayStride 4
               OpDecorate %RWStructuredBuffer Block
               OpMemberDecorate %RWStructuredBuffer 0 Offset 0
               OpDecorate %result Binding 0
               OpDecorate %result DescriptorSet 0
       %void = OpTypeVoid
       %uint = OpTypeInt 32 0
         %12 = OpTypeFunction %void
     %uint_0 = OpConstant %uint 0
     %uint_1 = OpConstant %uint 1
               OpTypeForwardPointer %_ptr_PhysicalStorageBuffer_Foo_natural PhysicalStorageBuffer
%Data_std430 = OpTypeStruct %_ptr_PhysicalStorageBuffer_Foo_natural
%_ptr_PushConstant_Data_std430 = OpTypePointer PushConstant %Data_std430
        %int = OpTypeInt 32 1
      %int_0 = OpConstant %int 0
%_ptr_PushConstant_52 = OpTypePointer PushConstant %_ptr_PhysicalStorageBuffer_Foo_natural
%Foo_natural = OpTypeStruct %uint %uint
    %uint_15 = OpConstant %uint 15
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%_runtimearr_uint = OpTypeRuntimeArray %uint
%RWStructuredBuffer = OpTypeStruct %_runtimearr_uint
%_ptr_StorageBuffer_RWStructuredBuffer = OpTypePointer StorageBuffer %RWStructuredBuffer
%_ptr_PhysicalStorageBuffer_Foo_natural = OpTypePointer PhysicalStorageBuffer %Foo_natural
         %pc = OpVariable %_ptr_PushConstant_Data_std430 PushConstant
     %result = OpVariable %_ptr_StorageBuffer_RWStructuredBuffer StorageBuffer
%_ptr_Function_uint = OpTypePointer Function %uint
      %int_1 = OpConstant %int 1
       %main = OpFunction %void None %12
         %13 = OpLabel
        %113 = OpVariable %_ptr_Function_uint Function
        %112 = OpVariable %_ptr_Function_uint Function
         %58 = OpAccessChain %_ptr_PushConstant_52 %pc %int_0
         %59 = OpLoad %_ptr_PhysicalStorageBuffer_Foo_natural %58
         %60 = OpPtrAccessChain %_ptr_PhysicalStorageBuffer_Foo_natural %59 %int_0
        %a_0 = OpLoad %Foo_natural %60 Aligned 4
         %96 = OpCompositeExtract %uint %a_0 0
         %97 = OpCompositeExtract %uint %a_0 1
               OpStore %112 %96
               OpStore %113 %97
         %75 = OpAccessChain %_ptr_StorageBuffer_uint %result %int_0 %int_0
               OpStore %75 %96
               OpReturn
               OpFunctionEnd
    )";

    vkt::Buffer bda_buffer(*m_device, 4, 0, vkt::device_address);
    vkt::Buffer out_buffer(*m_device, 16, VK_BUFFER_USAGE_


CryptoConvert_ToCapiPublicKeyBlob_System_Security_Cryptography_DSA:
_m_199:

	.byte 13,192,160,225,128,64,45,233,13,112,160,225,0,89,45,233,168,208,77,226,13,176,160,225,40,0,139,229,8,0,139,226
	.byte 0,16,160,227,32,32,160,227
bl p_133

	.byte 8,0,139,226,40,16,155,229,0,32,160,227,40,48,155,229,0,48,147,229,15,224,160,225,96,240,147,229,20,0,155,229
	.byte 12,16,144,229,16,0,129,226,20,0,128,226,1,0,128,224,160,16,139,229,1,0,128,224,4,0,128,226,20,16,128,226
	.byte 0,0,159,229,0,0,0,234
	.long mono_aot_Mono_Security_got - . + 24
	.byte 0,0,159,231
bl p_2

	.byte 0,16,160,225,160,0,155,229,1,32,160,225,12,32,146,229,0,0,82,227,165,0,0,155,6,32,160,227,16,32,193,229
	.byte 12,32,145,229,1,0,82,227,160,0,0,155,2,32,160,227,17,32,193,229,12,32,145,229,5,0,82,227,155,0,0,155
	.byte 34,32,160,227,21,32,193,229,12,32,145,229,8,0,82,227,150,0,0,155,68,32,160,227,24,32,193,229,12,32,145,229
	.byte 9,0,82,227,145,0,0,155,83,32,160,227,25,32,193,229,12,32,145,229,10,0,82,227,140,0,0,155,83,32,160,227
	.byte 26,32,193,229,12,32,145,229,11,0,82,227,135,0,0,155,49,32,160,227,27,32,193,229,156,16,139,229,152,0,139,229
	.byte 128,1,160,225
bl p_229

	.byte 0,16,160,225,156,0,155,229,12,32,145,229,0,0,82,227,124,0,0,155,16,32,209,229,12,48,144,229,12,0,83,227
	.byte 120,0,0,155,28,32,192,229,12,32,145,229,1,0,82,227,116,0,0,155,17,32,209,229,12,48,144,229,13,0,83,227
	.byte 112,0,0,155,29,32,192,229,12,32,145,229,2,0,82,227,108,0,0,155,18,32,209,229,12,48,144,229,14,0,83,227
	.byte 104,0,0,155,30,32,192,229,12,32,145,229,3,0,82,227,100,0,0,155,19,16,209,229,12,32,144,229,15,0,82,227
	.byte 96,0,0,155,31,16,192,229,148,0,139,229,20,0,155,229,144,0,139,229
bl p_82

	.byte 144,0,155,229,148,32,155,229,152,192,155,229,0,16,160,227,132,32,139,229,16,


_file_system.example.id

  root_directory {
    path = "/lambda"
    creation_info {
      owner_gid   = 1000
      owner_uid   = 1000
      permissions = "755"
    }
  }

  posix_user {
    gid = 1000
    uid = 1000
  }
}

# Lambda function with EFS
resource "aws_lambda_function" "example" {
  filename      = "function.zip"
  function_name = "example_efs_function"
  role          = aws_iam_role.example.arn
  handler       = "index.handler"
  runtime       = "nodejs20.x"

  vpc_config {
    subnet_ids         = var.subnet_ids
    security_group_ids = [aws_security_group.lambda.id]
  }

  file_system_config {
    arn              = aws_efs_access_point.example.arn
    local_mount_path = "/mnt/data"
  }

  # Ensure EFS is ready before Lambda creation
  depends_on = [aws_efs_mount_target.example]
}
```

### Function with Advanced Logging

```terraform
resource "aws_cloudwatch_log_group" "example" {
  name              = "/aws/lambda/example_function"
  retention_in_days = 14

  tags = {
    Environment = "production"
    Application = "example"
  }
}

resource "aws_lambda_function" "example" {
  filename      = "function.zip"
  function_name = "example_function"
  role          = aws_iam_role.example.arn
  handler       = "index.handler"
  runtime       = "nodejs20.x"

  # Advanced logging configuration
  logging_config {
    log_format            = "JSON"
    application_log_level = "INFO"
    system_log_level      = "WARN"
  }

  # Ensure log group exists before function
  depends_on = [aws_cloudwatch_log_group.example]
}
```

### Function with logging to S3 or Data Firehose

#### Required Resources

* An S3 bucket or Data Firehose delivery stream to store the logs.
* A CloudWatch Log Group with:

    * `log_group_class = "DELIVERY"`
    * A subscription filter whose `destination_arn` points to the S3 bucket or the Data Firehose delivery stream.

* IAM roles:

    * Assumed by the `logs.amazonaws.com` service to deliver logs to the S3 bucket or Data Firehose delivery stream.
    * Assumed by the `lambda.amazonaws.com` service to send logs to CloudWatch Logs

* A Lambda function:

    * In the `logging_configuration`, specify the name of the Log Group created above using the `log_group` field
    * No special configuration is required to use S3 or Firehose as the log destination

For more details, see [Sending Lambda function logs to Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/logging-with-s3.html).

#### Example: Exporting Lambda Logs to S3 Bucket

```terraform
locals {
  lambda_function_name = "lambda-log-export-example"
}

resource "aws_s3_bucket" "lambda_log_export" {
  bucket = "${local.lambda_function_name}-bucket"
}

resource "aws_cloudwatch_log_group" "export" {
  name            = "/aws/lambda/${local.lambda_function_name}"
  log_group_class = "DELIVERY"
}

data "aws_iam_policy_document" "logs_assume_role" {
  statement {
    actions = ["sts:AssumeRole"]
    effect  = "Allow"
    principals {
      type        = "Service"
      identifiers = ["logs.amazonaws.com"]
    }
  }
}


nimum velocity of grid
    vmax:    maximum velocity of grid
*/
  {
  int i, k;
  float tmp;
  float *bufz;

  bufz = ealloc1float(nz);

  for (i=0; i<nx; i++) {
    efread(bufz,sizeof(float),nz,vel);
    for (k=0; k<nz; k++) c2rho[k][i] = bufz[k];
  }

  switch(opflag) {
  case 0:
    /* variable density case */
    for (i=0; i<nx; i++) {
      efread(bufz,sizeof(float),nz,dens);
      for (k=0; k<nz; k++) {
	rhoinv[k][i] = 1./bufz[k];
	c2rho[k][i] = c2rho[k][i]*c2rho[k][i]*bufz[k];
      }
    }
    break;
  case 1:
    /* constant density case */
    for (k=0; k<nz; k++) {
      for (i=0; i<nx; i++) {
	c2rho[k][i] = c2rho[k][i]*c2rho[k][i];
      }
    }
    break;
  case 2:
    /* non-reflecting wave equation */
    break;
  }

  /* find maximum and minimum velocity */
  *vmax = 0.;
  *vmin = 1.e20;
  switch(opflag) {
  case 0:
    for (k=0; k<nz; k++) {
      for (i=0; i<nx; i++) {
	tmp = sqrt(c2rho[k][i]*rhoinv[k][i]);
	*vmax = (tmp > *vmax ? tmp : *vmax);
	*vmin = (tmp < *vmin ? tmp : *vmin);
      }
    }
    break;
  case 1:
    for (k=0; k<nz; k++) {
      for (i=0; i<nx; i++) {
	tmp = sqrt(c2rho[k][i]);
	*vmax = (tmp > *vmax ? tmp : *vmax);
	*vmin = (tmp < *vmin ? tmp : *vmin);
      }
    }
    break;
  case 2:
    for (k=0; k<nz; k++) {
      for (i=0; i<nx; i++) {
	tmp = c2rho[k][i];
	*vmax = (tmp > *vmax ? tmp : *vmax);
	*vmin = (tmp < *vmin ? tmp : *vmin);
      }
    }
    break;
  }
  free1float(bufz);
}
/**********************************************************************/
void g2d(float w, int nx, int nz, float **g)
/*
  2-D Gaussian weights for spatial distribution of source

  input:
    w:     width in grid points where Gaussian is one tenth of its maximum
    nx:    number of gridpoints in horizontal direction
    nz:    number of gridpoints in vertical direction

  output:
    g:     weights for spatial distribution of source
*/
{
  int i, i0, k, k0;
  float pi, sigma, fac, sum, r2, arg;

  pi = 4.*atan(1.);

  i0 = nx/2+1;
  k0 = nz/2+1;

  if (w < 0.1) w = 0.1; /* spatial spike */

  /* w is width where Gaussian is one tenth of its maximum */
  sigma = sqrt(-w*w/(2.*log(0.1)));

  fac = 1./(sigma*sqrt(2.*pi));

  sum = 0.;
  for (k=0; k<nz; k++) {
    for (i=0; i<nx; i++) {
      r2 = (i-i0)*(i-i0)+(k-k0)*(k-k0);
      arg = r2/(2.*


allows you to create and get {@link CKEDITOR.fileTools.fileLoader file loaders}.
			 *
			 *		var loader = editor.uploadRepository.create( file );
			 *		loader.loadAndUpload( 'http://foo/bar' );
			 *
			 * @since 4.5.0
			 * @readonly
			 * @property {CKEDITOR.fileTools.uploadRepository} uploadRepository
			 * @member CKEDITOR.editor
			 */
			editor.uploadRepository = new UploadRepository( editor );

			/**
			 * Event fired when the {@link CKEDITOR.fileTools.fileLoader file loader} should send XHR. If the event is not
			 * {@link CKEDITOR.eventInfo#stop stopped} or {@link CKEDITOR.eventInfo#cancel canceled}, the default request
			 * will be sent. Refer to the {@glink guide/dev_file_upload Uploading Dropped or Pasted Files} article for more information.
			 *
			 * @since 4.5.0
			 * @event fileUploadRequest
			 * @member CKEDITOR.editor
			 * @param data
			 * @param {CKEDITOR.fileTools.fileLoader} data.fileLoader A file loader instance.
			 * @param {Object} data.requestData An object containing all data to be sent to the server.
			 */
			editor.on( 'fileUploadRequest', function( evt ) {
				var fileLoader = evt.data.fileLoader;

				fileLoader.xhr.open( 'POST', fileLoader.uploadUrl, true );

				// Adding file to event's data by default - allows overwriting it by user's event listeners. (https://dev.ckeditor.com/ticket/13518)
				evt.data.requestData.upload = { file: fileLoader.file, name: fileLoader.fileName };
			}, null, null, 5 );

			editor.on( 'fileUploadRequest', function( evt ) {
				var fileLoader = evt.data.fileLoader,
					$formData = new FormData(),
					requestData = evt.data.requestData,
					configXhrHeaders = editor.config.fileTools_requestHeaders,
					header;

				for ( var name in requestData ) {
					var value = requestData[ name ];

					// Treating files in special way
					if ( typeof value === 'object' && value.file ) {
						$formData.append( name, value.file, value.name );
					}
					else {
						$formData.append( name, value );
					}
				}
				// Append token preventing CSRF attacks.
				$formData.append( 'ckCsrfToken', CKEDITOR.tools.getCsrfToken() );

				if ( configXhrHeaders ) {
					for ( header in configXhrHeaders ) {
						fileLoader.xhr.setRequestHeader( header, configXhrHeaders[ header ] );
					}
				}

				fileLoader.xhr.send( $formData );
			}, null, null, 999 );

			/**
			 * Event fired when the {@link CKEDITOR.fileTools.fileLoader file upload} response is received and needs to be parsed.
			 * If the event is not {@link CKEDITOR.eventInfo#stop stopped} or {@link CKEDITOR.eventInfo#cancel canceled},
			 * the default response handler will be used. Refer to the
			 * {@glink guide/dev_file_upload Uploading Dropped or Pasted Files} article for more information.
			 *
			 * @since 4.5.0
			 * @event fileUploadResponse
			 * @member CKEDITOR.editor
			 * @param data All data will be passed to {@link CKEDITOR.fileTools.fileLoader#responseData}.
			 * @param {CKEDITOR.fileTools.fileLoader} data.fileLoader A file loader instance.
			 * @param {String} data.message The message from the server. Needs to be set in the listener — see the


.activity},class:"justify-end"})};L(b,i=>{e(y)&&i(it)})}s(B);var tt=a(B,2),Z=o(tt),at=o(Z),$=K(()=>r("workflows.activity-id"));et(at,()=>e($),()=>t.activity.activityId);var ft=a(at,2);{var kt=i=>{var d=Wa(),u=st(d),O=K(()=>r("activities.paused-by"));et(u,()=>e(O),()=>{var w,E;return((E=(w=t.activity.pauseInfo)==null?void 0:w.manual)==null?void 0:E.identity)||""});var W=a(u,2),p=K(()=>r("activities.paused-since")),k=K(()=>{var w;return Ot((w=t.activity.pauseInfo)==null?void 0:w.pauseTime,C(),{relative:P()})});et(W,()=>e(p),()=>e(k));var h=a(W,2),T=K(()=>r("activities.pause-reason"));et(h,()=>e(T),()=>{var w,E;return((E=(w=t.activity.pauseInfo)==null?void 0:w.manual)==null?void 0:E.reason)||"-"}),_(i,d)};L(ft,i=>{t.activity.paused&&t.activity.pauseInfo&&i(kt)})}var Ut=a(ft,2),ie=K(()=>r("workflows.attempt"));et(Ut,()=>e(ie),()=>Y);var yt=a(Ut,2);{var ct=i=>{var d=Jt();const u=n(()=>ca({date:t.activity.scheduledTime,negativeDefault:""}));var O=st(d);{var W=p=>{S(p,()=>e(u))};L(O,p=>{e(u)&&p(W)})}_(i,d)};L(yt,i=>{t.activity.scheduledTime&&i(ct)})}var Bt=a(yt,2);{var pe=i=>{var d=K(()=>r("workflows.last-attempt-completed-time")),u=K(()=>Ot(t.activity.lastAttemptCompleteTime,C(),{relative:P()}));et(i,()=>e(d),()=>e(u))};L(Bt,i=>{t.activity.lastAttemptCompleteTime&&i(pe)})}var vt=a(Bt,2);{var Tt=i=>{var d=K(()=>r("workflows.retry-expiration")),u=K(()=>ra(t.activity.maximumAttempts,qe(Ee({start:Date.now(),end:t.activity.expirationTime}))));et(i,()=>e(d),()=>e(u))};L(vt,i=>{t.activity.expirationTime&&i(Tt)})}var It=a(vt,2);{var Lt=i=>{var d=K(()=>r("workflows.last-heartbeat")),u=K(()=>Ot(t.activity.lastHeartbeatTime,C(),{relative:P(),relativeStrict:!0}));et(i,()=>e(d),()=>e(u))};L(It,i=>{t.activity.lastHeartbeatTime&&i(Lt)})}var At=a(It,2);{var re=i=>{var d=K(()=>r("workflows.last-started-time")),u=K(()=>Ot(t.activity.lastStartedTime,C(),{relative:P()}));et(i,()=>e(d),()=>e(u))};L(At,i=>{t.activity.lastStartedTime&&i(re)})}var Dt=a(At,2);{var oe=i=>{var d=K(()=>r("workflows.last-wo


# -*- coding: Latin-1 -*-
"""
The Sorted List scheduler is the simplest scheduler available, though it has extremely bad performance in several situations.

It simply keeps a list of all models, which is sorted on timeNext. No operations have any influence on this heap itself, as there is no real internal representation. As soon as the imminent models are requested, this list is sorted again and the first elements are returned.
"""
from .logger import *

class SchedulerSL(object):
    """
    Scheduler class itself
    """
    def __init__(self, models, epsilon, totalModels):
        """
        Constructor

        :param models: all models in the simulation
        """
        self.models = list(models)
        self.epsilon = epsilon

    def schedule(self, model):
        """
        Schedule a model

        :param model: the model to schedule
        """
        self.models.append(model)
        self.models.sort(key=lambda i: i.timeNext)

    def unschedule(self, model):
        """
        Unschedule a model

        :param model: model to unschedule
        """
        self.models.remove(model)

    def massReschedule(self, reschedule_set):
        """
        Reschedule all models provided.
        Equivalent to calling unschedule(model); schedule(model) on every element in the iterable.

        :param reschedule_set: iterable containing all models to reschedule
        """
        self.models.sort(key=lambda i: i.timeNext)

    def readFirst(self):
        """
        Returns the time of the first model that has to transition

        :returns: timestamp of the first model
        """
        return self.models[0].timeNext

    def getImminent(self, time):
        """
        Returns a list of all models that transition at the provided time, with the specified epsilon deviation allowed.

        :param time: timestamp to check for models

        .. warning:: For efficiency, this method only checks the **first** elements, so trying to invoke this function with a timestamp higher than the value provided with the *readFirst* method, will **always** return an empty set.
        """
        immChildren = []
        t, age = time
        try:
            # Age must be exactly the same
            count = 0
            while (abs(self.models[count].timeNext[0] - t) < self.epsilon) and (self.models[count].timeNext[1] == age):
                # Don't pop, as we want to keep all models in the list
                immChildren.append(self.models[count])
                count += 1
        except IndexError:
            pass
        return immChildren


;
    /** Overrides assigning specific variants to specific users. The weighting system automatically assigns users to specific groups for you, but any overrides in this list will take precedence. */
    overrides?: OverrideSchema[];
}
import { Pipe, PipeTransform } from '@angular/core';
import { IHeroe } from '../interfaces/heroe.interface';

@Pipe({
  name: 'order'
})
export class OrderPipe implements PipeTransform {

  transform(heroes: IHeroe[]): IHeroe[] {
    return heroes.sort(
      (a, b) => {
        return (a.superhero > b.superhero) ? 1 : -1;
      })
  }
}
export const contents =
  '/ \n' +
  '* @description Constructs a SampleClass without any arguments.\n' +
  '* @example\n' +
  '* <pre>\n' +
  '* SampleClass sampleInstance = new SampleClass();\n' +
  '*/\n' +
  'public SampleClass() {\n' +
  "   System.debug('Constructor');\n" +
  '}\n' +
  '\n' +
  '/**\n' +
  '* @description Constructs a SampleClass with an argument.\n' +
  '*/\n' +
  'public SampleClass(String argument) {\n' +
  "   System.debug('Constructor');\n" +
  '}\n' +
  '\n' +
  '/**\n' +
  '* @description Executes commands based on the passed in argument.\n' +
  '* @example\n' +
  '* <pre>\n' +
  '* String result = SampleClass.testMethod();\n' +
  '* System.debug(result);\n' +
  '*/\n' +
  'public static String testMethod(String argument) {\n' +
  "   System.debug('Execute');\n" +
  '   return;\n' +
  '}\n' +
  '\n' +
  '\n' +
  '/**\n' +
  '* @description Calls the method.\n' +
  '* This methods allows you to call it.\n' +
  '*/\n' +
  'public static void call() { }\n' +
  '\n' +
  '/**\n' +
  '* @description This is a String property.\n' +
  '*/\n' +
  'public String MyProp { get; set; }\n' +
  '\n' +
  '/**\n' +
  '* @description This is a Decimal property.\n' +
  '*/\n' +
  'public Decimal AnotherProp { get; private set; }\n' +
  '\n' +
  '/**\n' +
  '* @description Inner class belonging to SampleClass.\n' +
  '*/\n' +
  'public class InnerClass {\n' +
  '   /**\n' +
  '    * @description Description of the inner property.\n' +
  '    */\n' +
  '   public InnerProp { get; set; }\n' +
  '\n' +
  '   /**\n' +
  '    * @description Executes from the inner class.\n' +
  '    */\n' +
  '   public void innerMethod() {\n' +
  "       System.debug('Executing inner method.');\n" +
  '   }\n' +
  '}\n' +
  '\n' +
  '/**\n' +
  '* @description Inner class belonging to SampleClass.\n' +
  '*/\n' +
  'public class AnotherInnerClass {\n' +
  '   /**\n' +
  '    * @description Description of the inner property.\n' +
  '    */\n' +
  '   public InnerProp { get; set; }\n' +
  '\n' +
  '   /**\n' +
  '    * @description Executes from the inner class.\n' +
  '    */\n' +
  '   public void innerMethod() {\n' +
  "       System.debug('Executing inner method.');\n" +
  '   }\n' +
  '}\n' +
  '}';
import marked from "marked";
import { promises as fs } from "fs";
import { load } from "js-yaml";

/**
 * @desc v3 metadata parser
 * @returns pars


’Zora et revenez faire votre rapport au commandant Mar'alith au Fort cénarien, en Silithus. Vous devez aussi apporter le Briefing de combat V pour terminer cette quête.";
		};
		[7782] = {
		   ["name"] = "Le seigneur de Rochenoire";
		   ["objective"] = "Allez à la vallée des Héros de Hurlevent et parlez au grand maréchal Afrasiabi.";
		};
		[1302] = {
		   ["name"] = "James Hyal";
		   ["objective"] = "Parler au greffier Lendry à la citadelle de Theramore.";
		};
		[9210] = {
		   ["name"] = "La Garde sauvage - Arcanum de focalisation";
		   ["objective"] = "Zanza le Sans-Repos, de Zul'Gurub, veut un Arcanum de focalisation.";
		};
		[8365] = {
		   ["name"] = "Ohé, des chapeaux de pirate !";
		   ["objective"] = "Hautaine Lamodiste veut que vous lui rapportiez 20 Chapeaux de pirate des mers du Sud à Port Gentepression, en Tanaris.";
		};
		[8551] = {
		   ["name"] = "Le coffre du capitaine";
		   ["objective"] = "Apportez son Coffre au capitaine Hecklebury Smotts à Baie-du-Butin.";
		};
		[9011] = {
		   ["name"] = "Garder le meilleur pour la fin";
		   ["objective"] = "Donnez votre Coiffe des éléments et votre Haubergeon des éléments à Mokvar.";
		};
		[8554] = {
		   ["name"] = "Face à Negolash";
		   ["objective"] = "Apporter 10 Ailes de busard grillées et 5 bouteilles de Vin de Junglevine dans le Canot de sauvetage du capitaine Smotts.$B$BTuer Negolash, et apporter le Sabre d'abordage de Smotts au capitaine Smotts, à Strangleronce.";
		};
		[7168] = {
		   ["name"] = "Ascension et reconnaissance";
		};
		[8555] = {
		   ["name"] = "Le fardeau des Vols draconiques";
		};
		[1154] = {
		   ["name"] = "L'épreuve de la Connaissance";
		   ["objective"] = "Trouver l’Héritage des Aspects et l’apporter à Braug Esprit-troublé, à côté de l’entrée de la Perce des Serres, dans les Serres-Rocheuses.";
		};
		[8589] = {
		   ["name"] = "La Horde a besoin de plus de cuir lourd !";
		};
		[2361] = {
		   ["name"] = "Réparer le Collier";
		};
		[1111] = {
		   ["name"] = "Maître des quais Tournoupette";
		   ["objective"] = "Apporter la Commande de Kravel au Maître des quais Tournoupette à Cabestan.";
		};
		[1678] = {
		   ["name"] = "Vejrek";
		   ["objective"] = "Apporter la Tête de Vejrek à Muren Foudrepique à Forgefer.";
		};
		[8574] = {
		   ["name"] = "Equipement de guerre de fidèle";
		   ["objective"] = "Ramener 15 Badges cénariens de combat, 20 Badges cénariens de logistique, 17 Badges cénariens de tactique et 1 Marque de Remulos à Vargus, au Fort cénarien en Silithus. Vous devrez aussi être $gRévéré:Révérée; par le Cercle cénarien pour terminer cette quête.";
		};
		[8580] = {
		   ["name"] = "La Horde a besoin de fleur de feu !";
		   ["o


obj)
	local pins_dlg = GetDialog("PinsDlg")
	if not pins_dlg then return end

	for i,pin in ipairs(pins_dlg) do
		if not pin.Dock and pin.context == obj then
			pin.keep_highlighted = false
			pin:OnMouseLeft()
			pin:SetFocus(false, true)
		end
	end
end