text:
title: '[Subversion] I wish branches were metadata'
author: Tim
layout: post
redirect_from: /2004/07/08/subversion-i-wish-branches-were-metadata/
category:  Impressions
tags:
  - subversion
  - version control
---
In some ways I wish that Subversion branches were metadata instead of engrained in the directory structure and "human use" of the tools.


text:
/**
 * This file is generated by Sencha Cmd and should NOT be edited.  It is
 * provided to support globbing requires, custom xtypes, and other
 * metadata-driven class system features
 */
Ext.Loader.addClassPathMappings({
  "Ext": "../../../../../extjs-4.2.2/src",
  "Ext.Msg": "../../../../../extjs-4.2.2/src/window/MessageBox.js",
  "TestApp": "../../app"
});
Ext.ClassManager.addNameAlternateMappings({
  "Ext.AbstractComponent": [],
  "Ext.AbstractManager": [],
  "Ext.AbstractPlugin": [],
  "Ext.Action": [],
  "Ext.Ajax": [],
  "Ext.Component": [],
  "Ext.ComponentLoader": [],
  "Ext.ComponentManager": [
    "Ext.ComponentMgr"
  ],
  "Ext.ComponentQuery": [],
  "Ext.Editor": [],
  "Ext.ElementLoader": [],
  "Ext.FocusManager": [
    "Ext.FocusMgr"
  ],
  "Ext.Img": [],
  "Ext.LoadMask": [],
  "Ext.ModelManager": [
    "Ext.ModelMgr"
  ],
  "Ext.PluginManager": [
    "Ext.PluginMgr"
  ],
  "Ext.ProgressBar": [],
  "Ext.Queryable": [],
  "Ext.Shadow": [],
  "Ext.ShadowPool": [],
  "Ext.ZIndexManager": [
    "Ext.WindowGroup"
  ],
  "Ext.app.Application": [],
  "Ext.app.Controller": [],
  "Ext.app.EventBus": [],
  "Ext.app.EventDomain": [],
  "Ext.app.domain.Component": [],
  "Ext.app.domain.Controller": [],
  "Ext.app.domain.Direct": [],
  "Ext.app.domain.Global": [],
  "Ext.app.domain.Store": [],
  "Ext.button.Button": [
    "Ext.Button"
  ],
  "Ext.button.Cycle": [
    "Ext.CycleButton"
  ],
  "Ext.button.Manager": [
    "Ext.ButtonToggleManager"
  ],
  "Ext.button.Split": [
    "Ext.SplitButton"
  ],
  "Ext.chart.Callout": [],
  "Ext.chart.Chart": [],
  "Ext.chart.Highlight": [],
  "Ext.chart.Label": [],
  "Ext.chart.Legend": [],
  "Ext.chart.LegendItem": [],
  "Ext.chart.Mask": [],
  "Ext.chart.MaskLayer": [],
  "Ext.chart.Navigation": [],
  "Ext.chart.Shape": [],
  "Ext.chart.Tip": [],
  "Ext.chart.TipSurface": [],
  "Ext.chart.axis.Abstract": [],
  "Ext.chart.axis.Axis": [
    "Ext.chart.Axis"
  ],
  "Ext.chart.axis.Category": [
    "Ext.chart.CategoryAxis"
  ],
  "Ext.chart.axis.Gauge": [],
  "Ext.chart.axis.Numeric": [
    "Ext.chart.NumericAxis"
  ],
  "Ext.chart.axis.Radial": [],
  "Ext.chart.axis.Time": [
    "Ext.chart.TimeAxis"
  ],
  "Ext.chart.series.Area": [],
  "Ext.chart.series.Bar": [
    "Ext.chart.BarSeries",
    "Ext.chart.BarChart",
    "Ext.chart.StackedBarChart"
  ],
  "Ext.chart.series.Cartesian": [
    "Ext.chart.CartesianSeries",
    "Ext.chart.CartesianChart"
  ],
  "Ext.chart.series.Column": [
    "Ext.chart.ColumnSeries",
    "Ext.chart.ColumnChart",
    "Ext.chart.StackedColumnChart"
  ],
  "Ext.chart.series.Gauge": [],
  "Ext.chart.series.Line": [
    "Ext.chart.LineSeries",
    "Ext.chart.LineChart"
  ],
  "Ext.chart.series.Pie": [
    "Ext.chart.PieSeries",
    "Ext.chart.PieChart"
  ],
  "Ext.chart.series.Radar": [],
  "Ext.chart.series.Scatter": [],
  "Ext.chart.series.Series": [],
  "Ext.chart.theme.Base": [],
  "Ext.chart.theme.Theme": [],
  "Ext.container.AbstractContainer": [],
  "Ext.container.ButtonGroup": [
    "Ext.ButtonGroup"
  ],
  "Ext.container.Container": [
    "Ext.Container"
  ],
  "Ext.container.DockingContainer": [],
  "Ext.container.Monitor": [],
  "Ext.container.Viewport": [
    "Ext.Viewport"
  ],
  "Ext.data.AbstractStore": [],
  "Ext.data.ArrayStore": [],
  "Ext.data.Batch": [],
  "Ext.data.BufferStore": [],
  "Ext.data.Connection": [],
  "Ext.data.DirectStore": [],
  "Ext.data.Errors": [],
  "Ext.data.Field": [],
  "Ext.data.Group": [],
  "Ext.data.IdGenerator": [],
  "Ext.data.JsonP": [],
  "Ext.data.JsonPStore": [],
  "Ext.data.JsonStore": [],
  "Ext.data.Model": [
    "Ext.data.Record"
  ],
  "Ext.data.NodeInterface": [],
  "Ext.data.NodeStore": [],
  "Ext.data.Operation": [],
  "Ext.data.PageMap": [],
  "Ext.data.Request": [],
  "Ext.data.ResultSet": [],
  "Ext.data.SequentialIdGenerator": [],
  "Ext.data.SortTypes": [],
  "Ext.data.Store": [],
  "Ext.data.StoreManager": [
    "Ext.StoreMgr",
    "Ext.data.StoreMgr",
    "Ext.StoreManager"
  ],
  "Ext.data.Tree": [],
  "Ext.data.TreeModel": [],
  "Ext.data.TreeStore": [],
  "Ext.data.Types": [],
  "Ext.data.UuidGenerator": [],
  "Ext.data.XmlStore": [],
  "Ext.data.association.Association": [
    "Ext.data.Association"
  ],
  "Ext.data.association.BelongsTo": [
    "Ext.data.BelongsToAssociation"
  ],
  "Ext.data.association.HasMany": [
    "Ext.data.HasManyAssociation"
  ],
  "Ext.data.association.HasOne": [
    "Ext.data.HasOneAssociation"
  ],
  "Ext.data.flash.BinaryXhr": [],
  "Ext.data.proxy.Ajax": [
    "Ext.data.HttpProxy",
    "Ext.data.AjaxProxy"
  ],
  "Ext.data.proxy.Client": [
    "Ext.data.ClientProxy"
  ],
  "Ext.data.proxy.Direct": [
    "Ext.data.DirectProxy"
  ],
  "Ext.data.proxy.JsonP": [
    "Ext.data.ScriptTagProxy"
  ],
  "Ext.data.proxy.LocalStorage": [
    "Ext.data.LocalStorageProxy"
  ],
  "Ext.data.proxy.Memory": [
    "Ext.data.MemoryProxy"
  ],
  "Ext.data.proxy.Proxy": [
    "Ext.data.DataProxy",
    "Ext.data.Proxy"
  ],
  "Ext.data.proxy.Rest": [
    "Ext.data.RestProxy"
  ],
  "Ext.data.proxy.Server": [
    "Ext.data.ServerProxy"
  ],
  "Ext.data.proxy.SessionStorage": [
    "Ext.data.SessionStorageProxy"
  ],
  "Ext.data.proxy.WebStorage": [
    "Ext.data.WebStorageProxy"
  ],
  "Ext.data.reader.Array": [
    "Ext.data.ArrayReader"
  ],
  "Ext.data.reader.Json": [
    "Ext.data.JsonReader"
  ],
  "Ext.data.reader.Reader": [
    "Ext.data.Reader",
    "Ext.data.DataReader"
  ],
  "Ext.data.reader.Xml": [
    "Ext.data.XmlReader"
  ],
  "Ext.data.validations": [],
  "Ext.data.writer.Json": [
    "Ext.data.JsonWriter"
  ],
  "Ext.data.writer.Writer": [
    "Ext.data.DataWriter",
    "Ext.data.Writer"
  ],
  "Ext.data.writer.Xml": [
    "Ext.data.XmlWriter"
  ],
  "Ext.dd.DD": [],
  "Ext.dd.DDProxy": [],
  "Ext.dd.DDTarget": [],
  "Ext.dd.DragDrop": [],
  "Ext.dd.DragDropManager": [
    "Ext.dd.DragDropMgr",
    "Ext.dd.DDM"
  ],
  "Ext.dd.DragSource": [],
  "Ext.dd.DragTracker": [],
  "Ext.dd.DragZone": [],
  "Ext.dd.DropTarget": [],
  "Ext.dd.DropZone": [],
  "Ext.dd.Registry": [],
  "Ext.dd.ScrollManager": [],
  "Ext.dd.StatusProxy": [],
  "Ext.diag.layout.Context": [],
  "Ext.diag.layout.ContextItem": [],
  "Ext.direct.Event": [],
  "Ext.direct.ExceptionEvent": [],
  "Ext.direct.JsonProvider": [],
  "Ext.direct.Manager": [],
  "Ext.direct.PollingProvider": [],
  "Ext.direct.Provider": [],
  "Ext.direct.RemotingEvent": [],
  "Ext.direct.RemotingMethod": [],
  "Ext.direct.RemotingProvider": [],
  "Ext.direct.Transaction": [
    "Ext.Direct.Transaction"
  ],
  "Ext.dom.Layer": [
    "Ext.Layer"
  ],
  "Ext.draw.Color": [],
  "Ext.draw.Component": [],
  "Ext.draw.CompositeSprite": [],
  "Ext.draw.Draw": [],
  "Ext.draw.Matrix": [],
  "Ext.draw.Sprite": [],
  "Ext.draw.SpriteDD": [],
  "Ext.draw.Surface": [],
  "Ext.draw.Text": [],
  "Ext.draw.engine.ImageExporter": [],
  "Ext.draw.engine.Svg": [],
  "Ext.draw.engine.SvgExporter": [],
  "Ext.draw.engine.Vml": [],
  "Ext.flash.Component": [
    "Ext.FlashComponent"
  ],
  "Ext.form.Basic": [
    "Ext.form.BasicForm"
  ],
  "Ext.form.CheckboxGroup": [],
  "Ext.form.CheckboxManager": [],
  "Ext.form.FieldAncestor": [],
  "Ext.form.FieldContainer": [],
  "Ext.form.FieldSet": [],
  "Ext.form.Label": [],
  "Ext.form.Labelable": [],
  "Ext.form.Panel": [
    "Ext.FormPanel",
    "Ext.form.FormPanel"
  ],
  "Ext.form.RadioGroup": [],
  "Ext.form.RadioManager": [],
  "Ext.form.action.Action": [
    "Ext.form.Action"
  ],
  "Ext.form.action.DirectLoad": [
    "Ext.form.Action.DirectLoad"
  ],
  "Ext.form.action.DirectSubmit": [
    "Ext.form.Action.DirectSubmit"
  ],
  "Ext.form.action.Load": [
    "Ext.form.Action.Load"
  ],
  "Ext.form.action.StandardSubmit": [],
  "Ext.form.action.Submit": [
    "Ext.form.Action.Submit"
  ],
  "Ext.form.field.Base": [
    "Ext.form.Field",
    "Ext.form.BaseField"
  ],
  "Ext.form.field.Checkbox": [
    "Ext.form.Checkbox"
  ],
  "Ext.form.field.ComboBox": [
    "Ext.form.ComboBox"
  ],
  "Ext.form.field.Date": [
    "Ext.form.DateField",
    "Ext.form.Date"
  ],
  "Ext.form.field.Display": [
    "Ext.form.DisplayField",
    "Ext.form.Display"
  ],
  "Ext.form.field.Field": [],
  "Ext.form.field.File": [
    "Ext.form.FileUploadField",
    "Ext.ux.form.FileUploadField",
    "Ext.form.File"
  ],
  "Ext.form.field.FileButton": [],
  "Ext.form.field.Hidden": [
    "Ext.form.Hidden"
  ],
  "Ext.form.field.HtmlEditor": [
    "Ext.form.HtmlEditor"
  ],
  "Ext.form.field.Number": [
    "Ext.form.NumberField",
    "Ext.form.Number"
  ],
  "Ext.form.field.Picker": [
    "Ext.form.Picker"
  ],
  "Ext.form.field.Radio": [
    "Ext.form.Radio"
  ],
  "Ext.form.field.Spinner": [
    "Ext.form.Spinner"
  ],
  "Ext.form.field.Text": [
    "Ext.form.TextField",
    "Ext.form.Text"
  ],
  "Ext.form.field.TextArea": [
    "Ext.form.TextArea"
  ],
  "Ext.form.field.Time": [
    "Ext.form.TimeField",
    "Ext.form.Time"
  ],
  "Ext.form.field.Trigger": [
    "Ext.form.TriggerField",
    "Ext.form.TwinTriggerField",
    "Ext.form.Trigger"
  ],
  "Ext.form.field.VTypes": [
    "Ext.form.VTypes"
  ],
  "Ext.fx.Anim": [],
  "Ext.fx.Animator": [],
  "Ext.fx.CubicBezier": [],
  "Ext.fx.Easing": [],
  "Ext.fx.Manager": [],
  "Ext.fx.PropertyHandler": [],
  "Ext.fx.Queue": [],
  "Ext.fx.target.Component": [],
  "Ext.fx.target.CompositeElement": [],
  "Ext.fx.target.CompositeElementCSS": [],
  "Ext.fx.target.CompositeSprite": [],
  "Ext.fx.target.Element": [],
  "Ext.fx.target.ElementCSS": [],
  "Ext.fx.target.Sprite": [],
  "Ext.fx.target.Target": [],
  "Ext.grid.CellContext": [],
  "Ext.grid.CellEditor": [],
  "Ext.grid.ColumnComponentLayout": [],
  "Ext.grid.ColumnLayout": [],
  "Ext.grid.ColumnManager": [
    "Ext.grid.ColumnModel"
  ],
  "Ext.grid.Panel": [
    "Ext.list.ListView",
    "Ext.ListView",
    "Ext.grid.GridPanel"
  ],
  "Ext.grid.RowEditor": [],
  "Ext.grid.RowEditorButtons": [],
  "Ext.grid.View": [],
  "Ext.grid.ViewDropZone": [],
  "Ext.grid.column.Action": [
    "Ext.grid.ActionColumn"
  ],
  "Ext.grid.column.Boolean": [
    "Ext.grid.BooleanColumn"
  ],
  "Ext.grid.column.Check": [
    "Ext.ux.CheckColumn",
    "Ext.grid.column.CheckColumn"
  ],
  "Ext.grid.column.Column": [
    "Ext.grid.Column"
  ],
  "Ext.grid.column.Date": [
    "Ext.grid.DateColumn"
  ],
  "Ext.grid.column.Number": [
    "Ext.grid.NumberColumn"
  ],
  "Ext.grid.column.RowNumberer": [
    "Ext.grid.RowNumberer"
  ],
  "Ext.grid.column.Template": [
    "Ext.grid.TemplateColumn"
  ],
  "Ext.grid.feature.AbstractSummary": [],
  "Ext.grid.feature.Feature": [],
  "Ext.grid.feature.GroupStore": [],
  "Ext.grid.feature.Grouping": [],
  "Ext.grid.feature.GroupingSummary": [],
  "Ext.grid.feature.RowBody": [],
  "Ext.grid.feature.RowWrap": [],
  "Ext.grid.feature.Summary": [],
  "Ext.grid.header.Container": [],
  "Ext.grid.header.DragZone": [],
  "Ext.grid.header.DropZone": [],
  "Ext.grid.locking.HeaderContainer": [],
  "Ext.grid.locking.Lockable": [
    "Ext.grid.Lockable"
  ],
  "Ext.grid.locking.View": [
    "Ext.grid.LockingView"
  ],
  "Ext.grid.plugin.BufferedRenderer": [],
  "Ext.grid.plugin.BufferedRendererTableView": [],
  "Ext.grid.plugin.BufferedRendererTreeView": [],
  "Ext.grid.plugin.CellEditing": [],
  "Ext.grid.plugin.DivRenderer": [],
  "Ext.grid.plugin.DragDrop": [],
  "Ext.grid.plugin.Editing": [],
  "Ext.grid.plugin.HeaderReorderer": [],
  "Ext.grid.plugin.HeaderResizer": [],
  "Ext.grid.plugin.RowEditing": [],
  "Ext.grid.plugin.RowExpander": [],
  "Ext.grid.property.Grid": [
    "Ext.grid.PropertyGrid"
  ],
  "Ext.grid.property.HeaderContainer": [
    "Ext.grid.PropertyColumnModel"
  ],
  "Ext.grid.property.Property": [
    "Ext.PropGridProperty"
  ],
  "Ext.grid.property.Store": [
    "Ext.grid.PropertyStore"
  ],
  "Ext.layout.ClassList": [],
  "Ext.layout.Context": [],
  "Ext.layout.ContextItem": [],
  "Ext.layout.Layout": [],
  "Ext.layout.SizeModel": [],
  "Ext.layout.component.Auto": [],
  "Ext.layout.component.Body": [],
  "Ext.layout.component.BoundList": [],
  "Ext.layout.component.Button": [],
  "Ext.layout.component.Component": [],
  "Ext.layout.component.Dock": [
    "Ext.layout.component.AbstractDock"
  ],
  "Ext.layout.component.Draw": [],
  "Ext.layout.component.FieldSet": [],
  "Ext.layout.component.ProgressBar": [],
  "Ext.layout.component.field.ComboBox": [],
  "Ext.layout.component.field.Field": [],
  "Ext.layout.component.field.FieldContainer": [],
  "Ext.layout.component.field.HtmlEditor": [],
  "Ext.layout.component.field.Slider": [],
  "Ext.layout.component.field.Text": [],
  "Ext.layout.component.field.TextArea": [],
  "Ext.layout.component.field.Trigger": [],
  "Ext.layout.container.Absolute": [
    "Ext.layout.AbsoluteLayout"
  ],
  "Ext.layout.container.Accordion": [
    "Ext.layout.AccordionLayout"
  ],
  "Ext.layout.container.Anchor": [
    "Ext.layout.AnchorLayout"
  ],
  "Ext.layout.container.Auto": [],
  "Ext.layout.container.Border": [
    "Ext.layout.BorderLayout"
  ],
  "Ext.layout.container.Box": [
    "Ext.layout.BoxLayout"
  ],
  "Ext.layout.container.Card": [
    "Ext.layout.CardLayout"
  ],
  "Ext.layout.container.CheckboxGroup": [],
  "Ext.layout.container.Column": [
    "Ext.layout.ColumnLayout"
  ],
  "Ext.layout.container.Container": [
    "Ext.layout.ContainerLayout"
  ],
  "Ext.layout.container.Editor": [],
  "Ext.layout.container.Fit": [
    "Ext.layout.FitLayout"
  ],
  "Ext.layout.container.Form": [
    "Ext.layout.FormLayout"
  ],
  "Ext.layout.container.HBox": [
    "Ext.layout.HBoxLayout"
  ],
  "Ext.layout.container.Table": [
    "Ext.layout.TableLayout"
  ],
  "Ext.layout.container.VBox": [
    "Ext.layout.VBoxLayout"
  ],
  "Ext.layout.container.border.Region": [],
  "Ext.layout.container.boxOverflow.Menu": [
    "Ext.layout.boxOverflow.Menu"
  ],
  "Ext.layout.container.boxOverflow.None": [
    "Ext.layout.boxOverflow.None"
  ],
  "Ext.layout.container.boxOverflow.Scroller": [
    "Ext.layout.boxOverflow.Scroller"
  ],
  "Ext.menu.CheckItem": [],
  "Ext.menu.ColorPicker": [],
  "Ext.menu.DatePicker": [],
  "Ext.menu.Item": [
    "Ext.menu.TextItem"
  ],
  "Ext.menu.KeyNav": [],
  "Ext.menu.Manager": [
    "Ext.menu.MenuMgr"
  ],
  "Ext.menu.Menu": [],
  "Ext.menu.Separator": [],
  "Ext.panel.AbstractPanel": [],
  "Ext.panel.DD": [],
  "Ext.panel.Header": [],
  "Ext.panel.Panel": [
    "Ext.Panel"
  ],
  "Ext.panel.Proxy": [
    "Ext.dd.PanelProxy"
  ],
  "Ext.panel.Table": [],
  "Ext.panel.Tool": [],
  "Ext.picker.Color": [
    "Ext.ColorPalette"
  ],
  "Ext.picker.Date": [
    "Ext.DatePicker"
  ],
  "Ext.picker.Month": [
    "Ext.MonthPicker"
  ],
  "Ext.picker.Time": [],
  "Ext.resizer.BorderSplitter": [],
  "Ext.resizer.BorderSplitterTracker": [],
  "Ext.resizer.Handle": [],
  "Ext.resizer.ResizeTracker": [],
  "Ext.resizer.Resizer": [
    "Ext.Resizable"
  ],
  "Ext.resizer.Splitter": [],
  "Ext.resizer.SplitterTracker": [],
  "Ext.rtl.AbstractComponent": [],
  "Ext.rtl.EventObjectImpl": [],
  "Ext.rtl.button.Button": [],
  "Ext.rtl.chart.Chart": [],
  "Ext.rtl.chart.Legend": [],
  "Ext.rtl.chart.LegendItem": [],
  "Ext.rtl.chart.axis.Axis": [],
  "Ext.rtl.chart.axis.Gauge": [],
  "Ext.rtl.chart.series.Cartesian": [],
  "Ext.rtl.chart.series.Gauge": [],
  "Ext.rtl.dd.DD": [],
  "Ext.rtl.dom.Element_anim": [],
  "Ext.rtl.dom.Element_insertion": [],
  "Ext.rtl.dom.Element_position": [],
  "Ext.rtl.dom.Element_scroll": [],
  "Ext.rtl.dom.Element_static": [],
  "Ext.rtl.dom.Layer": [],
  "Ext.rtl.draw.Component": [],
  "Ext.rtl.draw.Sprite": [],
  "Ext.rtl.form.field.Checkbox": [],
  "Ext.rtl.form.field.File": [],
  "Ext.rtl.form.field.Spinner": [],
  "Ext.rtl.form.field.Trigger": [],
  "Ext.rtl.grid.CellEditor": [],
  "Ext.rtl.grid.RowEditor": [],
  "Ext.rtl.grid.column.Column": [],
  "Ext.rtl.grid.feature.Summary": [],
  "Ext.rtl.grid.plugin.HeaderResizer": [],
  "Ext.rtl.grid.plugin.RowEditing": [],
  "Ext.rtl.layout.ContextItem": [],
  "Ext.rtl.layout.component.Dock": [],
  "Ext.rtl.layout.component.field.Text": [],
  "Ext.rtl.layout.component.field.Trigger": [],
  "Ext.rtl.layout.container.Absolute": [],
  "Ext.rtl.layout.container.Border": [],
  "Ext.rtl.layout.container.Box": [],
  "Ext.rtl.layout.container.CheckboxGroup": [],
  "Ext.rtl.layout.container.Column": [],
  "Ext.rtl.layout.container.HBox": [],
  "Ext.rtl.layout.container.VBox": [],
  "Ext.rtl.layout.container.boxOverflow.Menu": [],
  "Ext.rtl.layout.container.boxOverflow.Scroller": [],
  "Ext.rtl.panel.Header": [],
  "Ext.rtl.panel.Panel": [],
  "Ext.rtl.resizer.BorderSplitterTracker": [],
  "Ext.rtl.resizer.ResizeTracker": [],
  "Ext.rtl.resizer.SplitterTracker": [],
  "Ext.rtl.selection.CellModel": [],
  "Ext.rtl.selection.TreeModel": [],
  "Ext.rtl.slider.Multi": [],
  "Ext.rtl.tab.Bar": [],
  "Ext.rtl.tip.QuickTipManager": [],
  "Ext.rtl.tree.Column": [],
  "Ext.rtl.util.Floating": [],
  "Ext.rtl.util.Renderable": [],
  "Ext.rtl.view.Table": [],
  "Ext.selection.CellModel": [],
  "Ext.selection.CheckboxModel": [],
  "Ext.selection.DataViewModel": [],
  "Ext.selection.Model": [
    "Ext.AbstractSelectionModel"
  ],
  "Ext.selection.RowModel": [],
  "Ext.selection.TreeModel": [],
  "Ext.slider.Multi": [
    "Ext.slider.MultiSlider"
  ],
  "Ext.slider.Single": [
    "Ext.Slider",
    "Ext.form.SliderField",
    "Ext.slider.SingleSlider",
    "Ext.slider.Slider"
  ],
  "Ext.slider.Thumb": [],
  "Ext.slider.Tip": [],
  "Ext.state.CookieProvider": [],
  "Ext.state.LocalStorageProvider": [],
  "Ext.state.Manager": [],
  "Ext.state.Provider": [],
  "Ext.state.Stateful": [],
  "Ext.tab.Bar": [],
  "Ext.tab.Panel": [
    "Ext.TabPanel"
  ],
  "Ext.tab.Tab": [],
  "Ext.tip.QuickTip": [
    "Ext.QuickTip"
  ],
  "Ext.tip.QuickTipManager": [
    "Ext.QuickTips"
  ],
  "Ext.tip.Tip": [
    "Ext.Tip"
  ],
  "Ext.tip.ToolTip": [
    "Ext.ToolTip"
  ],
  "Ext.toolbar.Fill": [
    "Ext.Toolbar.Fill"
  ],
  "Ext.toolbar.Item": [
    "Ext.Toolbar.Item"
  ],
  "Ext.toolbar.Paging": [
    "Ext.PagingToolbar"
  ],
  "Ext.toolbar.Separator": [
    "Ext.Toolbar.Separator"
  ],
  "Ext.toolbar.Spacer": [
    "Ext.Toolbar.Spacer"
  ],
  "Ext.toolbar.TextItem": [
    "Ext.Toolbar.TextItem"
  ],
  "Ext.toolbar.Toolbar": [
    "Ext.Toolbar"
  ],
  "Ext.tree.Column": [],
  "Ext.tree.Panel": [
    "Ext.tree.TreePanel",
    "Ext.TreePanel"
  ],
  "Ext.tree.View": [],
  "Ext.tree.ViewDragZone": [],
  "Ext.tree.ViewDropZone": [],
  "Ext.tree.plugin.TreeViewDragDrop": [],
  "Ext.util.AbstractMixedCollection": [],
  "Ext.util.Animate": [],
  "Ext.util.Bindable": [],
  "Ext.util.CSS": [],
  "Ext.util.ClickRepeater": [],
  "Ext.util.ComponentDragger": [],
  "Ext.util.Cookies": [],
  "Ext.util.ElementContainer": [],
  "Ext.util.Filter": [],
  "Ext.util.Floating": [],
  "Ext.util.Grouper": [],
  "Ext.util.HashMap": [],
  "Ext.util.History": [
    "Ext.History"
  ],
  "Ext.util.Inflector": [],
  "Ext.util.KeyMap": [
    "Ext.KeyMap"
  ],
  "Ext.util.KeyNav": [
    "Ext.KeyNav"
  ],
  "Ext.util.LocalStorage": [],
  "Ext.util.LruCache": [],
  "Ext.util.Memento": [],
  "Ext.util.MixedCollection": [],
  "Ext.util.Offset": [],
  "Ext.util.Point": [],
  "Ext.util.ProtoElement": [],
  "Ext.util.Queue": [],
  "Ext.util.Region": [],
  "Ext.util.Renderable": [],
  "Ext.util.Sortable": [],
  "Ext.util.Sorter": [],
  "Ext.util.TextMetrics": [],
  "Ext.view.AbstractView": [],
  "Ext.view.BoundList": [
    "Ext.BoundList"
  ],
  "Ext.view.BoundListKeyNav": [],
  "Ext.view.DragZone": [],
  "Ext.view.DropZone": [],
  "Ext.view.NodeCache": [],
  "Ext.view.Table": [],
  "Ext.view.TableLayout": [],
  "Ext.view.View": [
    "Ext.DataView"
  ],
  "Ext.window.MessageBox": [],
  "Ext.window.Window": [
    "Ext.Window"
  ],
  "TestApp.Application": [],
  "TestApp.controller.Main": [],
  "TestApp.view.Main": [],
  "TestApp.view.Viewport": []
});
Ext.ClassManager.addNameAliasMappings({
  "Ext.AbstractComponent": [],
  "Ext.AbstractManager": [],
  "Ext.AbstractPlugin": [],
  "Ext.Action": [],
  "Ext.Ajax": [],
  "Ext.Component": [
    "widget.box",
    "widget.component"
  ],
  "Ext.ComponentLoader": [],
  "Ext.ComponentManager": [],
  "Ext.ComponentQuery": [],
  "Ext.Editor": [
    "widget.editor"
  ],
  "Ext.ElementLoader": [],
  "Ext.FocusManager": [],
  "Ext.Img": [
    "widget.image",
    "widget.imagecomponent"
  ],
  "Ext.LoadMask": [
    "widget.loadmask"
  ],
  "Ext.ModelManager": [],
  "Ext.PluginManager": [],
  "Ext.ProgressBar": [
    "widget.progressbar"
  ],
  "Ext.Queryable": [],
  "Ext.Shadow": [],
  "Ext.ShadowPool": [],
  "Ext.ZIndexManager": [],
  "Ext.app.Application": [],
  "Ext.app.Controller": [],
  "Ext.app.EventBus": [],
  "Ext.app.EventDomain": [],
  "Ext.app.domain.Component": [],
  "Ext.app.domain.Controller": [],
  "Ext.app.domain.Direct": [],
  "Ext.app.domain.Global": [],
  "Ext.app.domain.Store": [],
  "Ext.button.Button": [
    "widget.button"
  ],
  "Ext.button.Cycle": [
    "widget.cycle"
  ],
  "Ext.button.Manager": [],
  "Ext.button.Split": [
    "widget.splitbutton"
  ],
  "Ext.chart.Callout": [],
  "Ext.chart.Chart": [
    "widget.chart"
  ],
  "Ext.chart.Highlight": [],
  "Ext.chart.Label": [],
  "Ext.chart.Legend": [],
  "Ext.chart.LegendItem": [],
  "Ext.chart.Mask": [],
  "Ext.chart.MaskLayer": [],
  "Ext.chart.Navigation": [],
  "Ext.chart.Shape": [],
  "Ext.chart.Tip": [],
  "Ext.chart.TipSurface": [],
  "Ext.chart.axis.Abstract": [],
  "Ext.chart.axis.Axis": [],
  "Ext.chart.axis.Category": [
    "axis.category"
  ],
  "Ext.chart.axis.Gauge": [
    "axis.gauge"
  ],
  "Ext.chart.axis.Numeric": [
    "axis.numeric"
  ],
  "Ext.chart.axis.Radial": [
    "axis.radial"
  ],
  "Ext.chart.axis.Time": [
    "axis.time"
  ],
  "Ext.chart.series.Area": [
    "series.area"
  ],
  "Ext.chart.series.Bar": [
    "series.bar"
  ],
  "Ext.chart.series.Cartesian": [],
  "Ext.chart.series.Column": [
    "series.column"
  ],
  "Ext.chart.series.Gauge": [
    "series.gauge"
  ],
  "Ext.chart.series.Line": [
    "series.line"
  ],
  "Ext.chart.series.Pie": [
    "series.pie"
  ],
  "Ext.chart.series.Radar": [
    "series.radar"
  ],
  "Ext.chart.series.Scatter": [
    "series.scatter"
  ],
  "Ext.chart.series.Series": [],
  "Ext.chart.theme.Base": [],
  "Ext.chart.theme.Theme": [],
  "Ext.container.AbstractContainer": [],
  "Ext.container.ButtonGroup": [
    "widget.buttongroup"
  ],
  "Ext.container.Container": [
    "widget.container"
  ],
  "Ext.container.DockingContainer": [],
  "Ext.container.Monitor": [],
  "Ext.container.Viewport": [
    "widget.viewport"
  ],
  "Ext.data.AbstractStore": [],
  "Ext.data.ArrayStore": [
    "store.array"
  ],
  "Ext.data.Batch": [],
  "Ext.data.BufferStore": [
    "store.buffer"
  ],
  "Ext.data.Connection": [],
  "Ext.data.DirectStore": [
    "store.direct"
  ],
  "Ext.data.Errors": [],
  "Ext.data.Field": [
    "data.field"
  ],
  "Ext.data.Group": [],
  "Ext.data.IdGenerator": [],
  "Ext.data.JsonP": [],
  "Ext.data.JsonPStore": [
    "store.jsonp"
  ],
  "Ext.data.JsonStore": [
    "store.json"
  ],
  "Ext.data.Model": [],
  "Ext.data.NodeInterface": [],
  "Ext.data.NodeStore": [
    "store.node"
  ],
  "Ext.data.Operation": [],
  "Ext.data.PageMap": [],
  "Ext.data.Request": [],
  "Ext.data.ResultSet": [],
  "Ext.data.SequentialIdGenerator": [
    "idgen.sequential"
  ],
  "Ext.data.SortTypes": [],
  "Ext.data.Store": [
    "store.store"
  ],
  "Ext.data.StoreManager": [],
  "Ext.data.Tree": [
    "data.tree"
  ],
  "Ext.data.TreeModel": [],
  "Ext.data.TreeStore": [
    "store.tree"
  ],
  "Ext.data.Types": [],
  "Ext.data.UuidGenerator": [
    "idgen.uuid"
  ],
  "Ext.data.XmlStore": [
    "store.xml"
  ],
  "Ext.data.association.Association": [],
  "Ext.data.association.BelongsTo": [
    "association.belongsto"
  ],
  "Ext.data.association.HasMany": [
    "association.hasmany"
  ],
  "Ext.data.association.HasOne": [
    "association.hasone"
  ],
  "Ext.data.flash.BinaryXhr": [],
  "Ext.data.proxy.Ajax": [
    "proxy.ajax"
  ],
  "Ext.data.proxy.Client": [],
  "Ext.data.proxy.Direct": [
    "proxy.direct"
  ],
  "Ext.data.proxy.JsonP": [
    "proxy.jsonp",
    "proxy.scripttag"
  ],
  "Ext.data.proxy.LocalStorage": [
    "proxy.localstorage"
  ],
  "Ext.data.proxy.Memory": [
    "proxy.memory"
  ],
  "Ext.data.proxy.Proxy": [
    "proxy.proxy"
  ],
  "Ext.data.proxy.Rest": [
    "proxy.rest"
  ],
  "Ext.data.proxy.Server": [
    "proxy.server"
  ],
  "Ext.data.proxy.SessionStorage": [
    "proxy.sessionstorage"
  ],
  "Ext.data.proxy.WebStorage": [],
  "Ext.data.reader.Array": [
    "reader.array"
  ],
  "Ext.data.reader.Json": [
    "reader.json"
  ],
  "Ext.data.reader.Reader": [],
  "Ext.data.reader.Xml": [
    "reader.xml"
  ],
  "Ext.data.validations": [],
  "Ext.data.writer.Json": [
    "writer.json"
  ],
  "Ext.data.writer.Writer": [
    "writer.base"
  ],
  "Ext.data.writer.Xml": [
    "writer.xml"
  ],
  "Ext.dd.DD": [],
  "Ext.dd.DDProxy": [],
  "Ext.dd.DDTarget": [],
  "Ext.dd.DragDrop": [],
  "Ext.dd.DragDropManager": [],
  "Ext.dd.DragSource": [],
  "Ext.dd.DragTracker": [],
  "Ext.dd.DragZone": [],
  "Ext.dd.DropTarget": [],
  "Ext.dd.DropZone": [],
  "Ext.dd.Registry": [],
  "Ext.dd.ScrollManager": [],
  "Ext.dd.StatusProxy": [],
  "Ext.diag.layout.Context": [],
  "Ext.diag.layout.ContextItem": [],
  "Ext.direct.Event": [
    "direct.event"
  ],
  "Ext.direct.ExceptionEvent": [
    "direct.exception"
  ],
  "Ext.direct.JsonProvider": [
    "direct.jsonprovider"
  ],
  "Ext.direct.Manager": [],
  "Ext.direct.PollingProvider": [
    "direct.pollingprovider"
  ],
  "Ext.direct.Provider": [
    "direct.provider"
  ],
  "Ext.direct.RemotingEvent": [
    "direct.rpc"
  ],
  "Ext.direct.RemotingMethod": [],
  "Ext.direct.RemotingProvider": [
    "direct.remotingprovider"
  ],
  "Ext.direct.Transaction": [
    "direct.transaction"
  ],
  "Ext.dom.Layer": [],
  "Ext.draw.Color": [],
  "Ext.draw.Component": [
    "widget.draw"
  ],
  "Ext.draw.CompositeSprite": [],
  "Ext.draw.Draw": [],
  "Ext.draw.Matrix": [],
  "Ext.draw.Sprite": [],
  "Ext.draw.SpriteDD": [],
  "Ext.draw.Surface": [],
  "Ext.draw.Text": [
    "widget.text"
  ],
  "Ext.draw.engine.ImageExporter": [],
  "Ext.draw.engine.Svg": [],
  "Ext.draw.engine.SvgExporter": [],
  "Ext.draw.engine.Vml": [],
  "Ext.flash.Component": [
    "widget.flash"
  ],
  "Ext.form.Basic": [],
  "Ext.form.CheckboxGroup": [
    "widget.checkboxgroup"
  ],
  "Ext.form.CheckboxManager": [],
  "Ext.form.FieldAncestor": [],
  "Ext.form.FieldContainer": [
    "widget.fieldcontainer"
  ],
  "Ext.form.FieldSet": [
    "widget.fieldset"
  ],
  "Ext.form.Label": [
    "widget.label"
  ],
  "Ext.form.Labelable": [],
  "Ext.form.Panel": [
    "widget.form"
  ],
  "Ext.form.RadioGroup": [
    "widget.radiogroup"
  ],
  "Ext.form.RadioManager": [],
  "Ext.form.action.Action": [],
  "Ext.form.action.DirectLoad": [
    "formaction.directload"
  ],
  "Ext.form.action.DirectSubmit": [
    "formaction.directsubmit"
  ],
  "Ext.form.action.Load": [
    "formaction.load"
  ],
  "Ext.form.action.StandardSubmit": [
    "formaction.standardsubmit"
  ],
  "Ext.form.action.Submit": [
    "formaction.submit"
  ],
  "Ext.form.field.Base": [
    "widget.field"
  ],
  "Ext.form.field.Checkbox": [
    "widget.checkbox",
    "widget.checkboxfield"
  ],
  "Ext.form.field.ComboBox": [
    "widget.combo",
    "widget.combobox"
  ],
  "Ext.form.field.Date": [
    "widget.datefield"
  ],
  "Ext.form.field.Display": [
    "widget.displayfield"
  ],
  "Ext.form.field.Field": [],
  "Ext.form.field.File": [
    "widget.filefield",
    "widget.fileuploadfield"
  ],
  "Ext.form.field.FileButton": [
    "widget.filebutton"
  ],
  "Ext.form.field.Hidden": [
    "widget.hidden",
    "widget.hiddenfield"
  ],
  "Ext.form.field.HtmlEditor": [
    "widget.htmleditor"
  ],
  "Ext.form.field.Number": [
    "widget.numberfield"
  ],
  "Ext.form.field.Picker": [
    "widget.pickerfield"
  ],
  "Ext.form.field.Radio": [
    "widget.radio",
    "widget.radiofield"
  ],
  "Ext.form.field.Spinner": [
    "widget.spinnerfield"
  ],
  "Ext.form.field.Text": [
    "widget.textfield"
  ],
  "Ext.form.field.TextArea": [
    "widget.textarea",
    "widget.textareafield"
  ],
  "Ext.form.field.Time": [
    "widget.timefield"
  ],
  "Ext.form.field.Trigger": [
    "widget.trigger",
    "widget.triggerfield"
  ],
  "Ext.form.field.VTypes": [],
  "Ext.fx.Anim": [],
  "Ext.fx.Animator": [],
  "Ext.fx.CubicBezier": [],
  "Ext.fx.Easing": [],
  "Ext.fx.Manager": [],
  "Ext.fx.PropertyHandler": [],
  "Ext.fx.Queue": [],
  "Ext.fx.target.Component": [],
  "Ext.fx.target.CompositeElement": [],
  "Ext.fx.target.CompositeElementCSS": [],
  "Ext.fx.target.CompositeSprite": [],
  "Ext.fx.target.Element": [],
  "Ext.fx.target.ElementCSS": [],
  "Ext.fx.target.Sprite": [],
  "Ext.fx.target.Target": [],
  "Ext.grid.CellContext": [],
  "Ext.grid.CellEditor": [],
  "Ext.grid.ColumnComponentLayout": [
    "layout.columncomponent"
  ],
  "Ext.grid.ColumnLayout": [
    "layout.gridcolumn"
  ],
  "Ext.grid.ColumnManager": [],
  "Ext.grid.Panel": [
    "widget.grid",
    "widget.gridpanel"
  ],
  "Ext.grid.RowEditor": [
    "widget.roweditor"
  ],
  "Ext.grid.RowEditorButtons": [
    "widget.roweditorbuttons"
  ],
  "Ext.grid.View": [
    "widget.gridview"
  ],
  "Ext.grid.ViewDropZone": [],
  "Ext.grid.column.Action": [
    "widget.actioncolumn"
  ],
  "Ext.grid.column.Boolean": [
    "widget.booleancolumn"
  ],
  "Ext.grid.column.Check": [
    "widget.checkcolumn"
  ],
  "Ext.grid.column.Column": [
    "widget.gridcolumn"
  ],
  "Ext.grid.column.Date": [
    "widget.datecolumn"
  ],
  "Ext.grid.column.Number": [
    "widget.numbercolumn"
  ],
  "Ext.grid.column.RowNumberer": [
    "widget.rownumberer"
  ],
  "Ext.grid.column.Template": [
    "widget.templatecolumn"
  ],
  "Ext.grid.feature.AbstractSummary": [
    "feature.abstractsummary"
  ],
  "Ext.grid.feature.Feature": [
    "feature.feature"
  ],
  "Ext.grid.feature.GroupStore": [],
  "Ext.grid.feature.Grouping": [
    "feature.grouping"
  ],
  "Ext.grid.feature.GroupingSummary": [
    "feature.groupingsummary"
  ],
  "Ext.grid.feature.RowBody": [
    "feature.rowbody"
  ],
  "Ext.grid.feature.RowWrap": [
    "feature.rowwrap"
  ],
  "Ext.grid.feature.Summary": [
    "feature.summary"
  ],
  "Ext.grid.header.Container": [
    "widget.headercontainer"
  ],
  "Ext.grid.header.DragZone": [],
  "Ext.grid.header.DropZone": [],
  "Ext.grid.locking.HeaderContainer": [],
  "Ext.grid.locking.Lockable": [],
  "Ext.grid.locking.View": [],
  "Ext.grid.plugin.BufferedRenderer": [
    "plugin.bufferedrenderer"
  ],
  "Ext.grid.plugin.BufferedRendererTableView": [],
  "Ext.grid.plugin.BufferedRendererTreeView": [],
  "Ext.grid.plugin.CellEditing": [
    "plugin.cellediting"
  ],
  "Ext.grid.plugin.DivRenderer": [
    "plugin.divrenderer"
  ],
  "Ext.grid.plugin.DragDrop": [
    "plugin.gridviewdragdrop"
  ],
  "Ext.grid.plugin.Editing": [
    "editing.editing"
  ],
  "Ext.grid.plugin.HeaderReorderer": [
    "plugin.gridheaderreorderer"
  ],
  "Ext.grid.plugin.HeaderResizer": [
    "plugin.gridheaderresizer"
  ],
  "Ext.grid.plugin.RowEditing": [
    "plugin.rowediting"
  ],
  "Ext.grid.plugin.RowExpander": [
    "plugin.rowexpander"
  ],
  "Ext.grid.property.Grid": [
    "widget.propertygrid"
  ],
  "Ext.grid.property.HeaderContainer": [],
  "Ext.grid.property.Property": [],
  "Ext.grid.property.Store": [],
  "Ext.layout.ClassList": [],
  "Ext.layout.Context": [],
  "Ext.layout.ContextItem": [],
  "Ext.layout.Layout": [],
  "Ext.layout.SizeModel": [],
  "Ext.layout.component.Auto": [
    "layout.autocomponent"
  ],
  "Ext.layout.component.Body": [
    "layout.body"
  ],
  "Ext.layout.component.BoundList": [
    "layout.boundlist"
  ],
  "Ext.layout.component.Button": [
    "layout.button"
  ],
  "Ext.layout.component.Component": [],
  "Ext.layout.component.Dock": [
    "layout.dock"
  ],
  "Ext.layout.component.Draw": [
    "layout.draw"
  ],
  "Ext.layout.component.FieldSet": [
    "layout.fieldset"
  ],
  "Ext.layout.component.ProgressBar": [
    "layout.progressbar"
  ],
  "Ext.layout.component.field.ComboBox": [
    "layout.combobox"
  ],
  "Ext.layout.component.field.Field": [
    "layout.field"
  ],
  "Ext.layout.component.field.FieldContainer": [
    "layout.fieldcontainer"
  ],
  "Ext.layout.component.field.HtmlEditor": [
    "layout.htmleditor"
  ],
  "Ext.layout.component.field.Slider": [
    "layout.sliderfield"
  ],
  "Ext.layout.component.field.Text": [
    "layout.textfield"
  ],
  "Ext.layout.component.field.TextArea": [
    "layout.textareafield"
  ],
  "Ext.layout.component.field.Trigger": [
    "layout.triggerfield"
  ],
  "Ext.layout.container.Absolute": [
    "layout.absolute"
  ],
  "Ext.layout.container.Accordion": [
    "layout.accordion"
  ],
  "Ext.layout.container.Anchor": [
    "layout.anchor"
  ],
  "Ext.layout.container.Auto": [
    "layout.auto",
    "layout.autocontainer"
  ],
  "Ext.layout.container.Border": [
    "layout.border"
  ],
  "Ext.layout.container.Box": [
    "layout.box"
  ],
  "Ext.layout.container.Card": [
    "layout.card"
  ],
  "Ext.layout.container.CheckboxGroup": [
    "layout.checkboxgroup"
  ],
  "Ext.layout.container.Column": [
    "layout.column"
  ],
  "Ext.layout.container.Container": [
    "layout.container"
  ],
  "Ext.layout.container.Editor": [
    "layout.editor"
  ],
  "Ext.layout.container.Fit": [
    "layout.fit"
  ],
  "Ext.layout.container.Form": [
    "layout.form"
  ],
  "Ext.layout.container.HBox": [
    "layout.hbox"
  ],
  "Ext.layout.container.Table": [
    "layout.table"
  ],
  "Ext.layout.container.VBox": [
    "layout.vbox"
  ],
  "Ext.layout.container.border.Region": [],
  "Ext.layout.container.boxOverflow.Menu": [],
  "Ext.layout.container.boxOverflow.None": [],
  "Ext.layout.container.boxOverflow.Scroller": [],
  "Ext.menu.CheckItem": [
    "widget.menucheckitem"
  ],
  "Ext.menu.ColorPicker": [
    "widget.colormenu"
  ],
  "Ext.menu.DatePicker": [
    "widget.datemenu"
  ],
  "Ext.menu.Item": [
    "widget.menuitem"
  ],
  "Ext.menu.KeyNav": [],
  "Ext.menu.Manager": [],
  "Ext.menu.Menu": [
    "widget.menu"
  ],
  "Ext.menu.Separator": [
    "widget.menuseparator"
  ],
  "Ext.panel.AbstractPanel": [],
  "Ext.panel.DD": [],
  "Ext.panel.Header": [
    "widget.header"
  ],
  "Ext.panel.Panel": [
    "widget.panel"
  ],
  "Ext.panel.Proxy": [],
  "Ext.panel.Table": [
    "widget.tablepanel"
  ],
  "Ext.panel.Tool": [
    "widget.tool"
  ],
  "Ext.picker.Color": [
    "widget.colorpicker"
  ],
  "Ext.picker.Date": [
    "widget.datepicker"
  ],
  "Ext.picker.Month": [
    "widget.monthpicker"
  ],
  "Ext.picker.Time": [
    "widget.timepicker"
  ],
  "Ext.resizer.BorderSplitter": [
    "widget.bordersplitter"
  ],
  "Ext.resizer.BorderSplitterTracker": [],
  "Ext.resizer.Handle": [],
  "Ext.resizer.ResizeTracker": [],
  "Ext.resizer.Resizer": [],
  "Ext.resizer.Splitter": [
    "widget.splitter"
  ],
  "Ext.resizer.SplitterTracker": [],
  "Ext.rtl.AbstractComponent": [],
  "Ext.rtl.EventObjectImpl": [],
  "Ext.rtl.button.Button": [],
  "Ext.rtl.chart.Chart": [],
  "Ext.rtl.chart.Legend": [],
  "Ext.rtl.chart.LegendItem": [],
  "Ext.rtl.chart.axis.Axis": [],
  "Ext.rtl.chart.axis.Gauge": [],
  "Ext.rtl.chart.series.Cartesian": [],
  "Ext.rtl.chart.series.Gauge": [],
  "Ext.rtl.dd.DD": [],
  "Ext.rtl.dom.Element_anim": [],
  "Ext.rtl.dom.Element_insertion": [],
  "Ext.rtl.dom.Element_position": [],
  "Ext.rtl.dom.Element_scroll": [],
  "Ext.rtl.dom.Element_static": [],
  "Ext.rtl.dom.Layer": [],
  "Ext.rtl.draw.Component": [],
  "Ext.rtl.draw.Sprite": [],
  "Ext.rtl.form.field.Checkbox": [],
  "Ext.rtl.form.field.File": [],
  "Ext.rtl.form.field.Spinner": [],
  "Ext.rtl.form.field.Trigger": [],
  "Ext.rtl.grid.CellEditor": [],
  "Ext.rtl.grid.RowEditor": [],
  "Ext.rtl.grid.column.Column": [],
  "Ext.rtl.grid.feature.Summary": [],
  "Ext.rtl.grid.plugin.HeaderResizer": [],
  "Ext.rtl.grid.plugin.RowEditing": [],
  "Ext.rtl.layout.ContextItem": [],
  "Ext.rtl.layout.component.Dock": [],
  "Ext.rtl.layout.component.field.Text": [],
  "Ext.rtl.layout.component.field.Trigger": [],
  "Ext.rtl.layout.container.Absolute": [],
  "Ext.rtl.layout.container.Border": [],
  "Ext.rtl.layout.container.Box": [],
  "Ext.rtl.layout.container.CheckboxGroup": [],
  "Ext.rtl.layout.container.Column": [],
  "Ext.rtl.layout.container.HBox": [],
  "Ext.rtl.layout.container.VBox": [],
  "Ext.rtl.layout.container.boxOverflow.Menu": [],
  "Ext.rtl.layout.container.boxOverflow.Scroller": [],
  "Ext.rtl.panel.Header": [],
  "Ext.rtl.panel.Panel": [],
  "Ext.rtl.resizer.BorderSplitterTracker": [],
  "Ext.rtl.resizer.ResizeTracker": [],
  "Ext.rtl.resizer.SplitterTracker": [],
  "Ext.rtl.selection.CellModel": [],
  "Ext.rtl.selection.TreeModel": [],
  "Ext.rtl.slider.Multi": [],
  "Ext.rtl.tab.Bar": [],
  "Ext.rtl.tip.QuickTipManager": [],
  "Ext.rtl.tree.Column": [],
  "Ext.rtl.util.Floating": [],
  "Ext.rtl.util.Renderable": [],
  "Ext.rtl.view.Table": [],
  "Ext.selection.CellModel": [
    "selection.cellmodel"
  ],
  "Ext.selection.CheckboxModel": [
    "selection.checkboxmodel"
  ],
  "Ext.selection.DataViewModel": [],
  "Ext.selection.Model": [],
  "Ext.selection.RowModel": [
    "selection.rowmodel"
  ],
  "Ext.selection.TreeModel": [
    "selection.treemodel"
  ],
  "Ext.slider.Multi": [
    "widget.multislider"
  ],
  "Ext.slider.Single": [
    "widget.slider",
    "widget.sliderfield"
  ],
  "Ext.slider.Thumb": [],
  "Ext.slider.Tip": [
    "widget.slidertip"
  ],
  "Ext.state.CookieProvider": [],
  "Ext.state.LocalStorageProvider": [
    "state.localstorage"
  ],
  "Ext.state.Manager": [],
  "Ext.state.Provider": [],
  "Ext.state.Stateful": [],
  "Ext.tab.Bar": [
    "widget.tabbar"
  ],
  "Ext.tab.Panel": [
    "widget.tabpanel"
  ],
  "Ext.tab.Tab": [
    "widget.tab"
  ],
  "Ext.tip.QuickTip": [
    "widget.quicktip"
  ],
  "Ext.tip.QuickTipManager": [],
  "Ext.tip.Tip": [],
  "Ext.tip.ToolTip": [
    "widget.tooltip"
  ],
  "Ext.toolbar.Fill": [
    "widget.tbfill"
  ],
  "Ext.toolbar.Item": [
    "widget.tbitem"
  ],
  "Ext.toolbar.Paging": [
    "widget.pagingtoolbar"
  ],
  "Ext.toolbar.Separator": [
    "widget.tbseparator"
  ],
  "Ext.toolbar.Spacer": [
    "widget.tbspacer"
  ],
  "Ext.toolbar.TextItem": [
    "widget.tbtext"
  ],
  "Ext.toolbar.Toolbar": [
    "widget.toolbar"
  ],
  "Ext.tree.Column": [
    "widget.treecolumn"
  ],
  "Ext.tree.Panel": [
    "widget.treepanel"
  ],
  "Ext.tree.View": [
    "widget.treeview"
  ],
  "Ext.tree.ViewDragZone": [],
  "Ext.tree.ViewDropZone": [],
  "Ext.tree.plugin.TreeViewDragDrop": [
    "plugin.treeviewdragdrop"
  ],
  "Ext.util.AbstractMixedCollection": [],
  "Ext.util.Animate": [],
  "Ext.util.Bindable": [],
  "Ext.util.CSS": [],
  "Ext.util.ClickRepeater": [],
  "Ext.util.ComponentDragger": [],
  "Ext.util.Cookies": [],
  "Ext.util.ElementContainer": [],
  "Ext.util.Filter": [],
  "Ext.util.Floating": [],
  "Ext.util.Grouper": [],
  "Ext.util.HashMap": [],
  "Ext.util.History": [],
  "Ext.util.Inflector": [],
  "Ext.util.KeyMap": [],
  "Ext.util.KeyNav": [],
  "Ext.util.LocalStorage": [],
  "Ext.util.LruCache": [],
  "Ext.util.Memento": [],
  "Ext.util.MixedCollection": [],
  "Ext.util.Offset": [],
  "Ext.util.Point": [],
  "Ext.util.ProtoElement": [],
  "Ext.util.Queue": [],
  "Ext.util.Region": [],
  "Ext.util.Renderable": [],
  "Ext.util.Sortable": [],
  "Ext.util.Sorter": [],
  "Ext.util.TextMetrics": [],
  "Ext.view.AbstractView": [],
  "Ext.view.BoundList": [
    "widget.boundlist"
  ],
  "Ext.view.BoundListKeyNav": [],
  "Ext.view.DragZone": [],
  "Ext.view.DropZone": [],
  "Ext.view.NodeCache": [],
  "Ext.view.Table": [
    "widget.tableview"
  ],
  "Ext.view.TableLayout": [
    "layout.tableview"
  ],
  "Ext.view.View": [
    "widget.dataview"
  ],
  "Ext.window.MessageBox": [
    "widget.messagebox"
  ],
  "Ext.window.Window": [
    "widget.window"
  ],
  "TestApp.Application": [],
  "TestApp.controller.Main": [],
  "TestApp.view.Main": [
    "widget.app-main"
  ],
  "TestApp.view.Viewport": []
});
Ext.setVersion("ext-theme-base", "4.2.2");
Ext.setVersion("ext-theme-classic", "4.2.2");
Ext.setVersion("ext-theme-neutral", "4.2.2");

redpajama_set_name: RedPajamaGithub


text:
import {
  distinctByProperty,
  fillServerVariables,
  generateSlug,
  getMethodAnnotationName,
  getName,
  getPaths,
  getPluginNameFromKey,
  getSecurity,
  getServers,
  hasUpstreams,
  HttpMethodType,
  isHttpMethodKey,
  isPluginKey,
  parseUrl,
  pathVariablesToRegex,
} from './common';
import { getSpec } from './declarative-config/jest/test-helpers';
import { xKongName } from './types/kong';
import { OA3Operation, OA3Server } from './types/openapi3';

describe('common', () => {
  describe('getPaths()', () => {
    it('should return api paths', () => {
      const paths = {
        '/': {
          description: 'test',
        },
      };
      const api = getSpec({ paths });
      const result = getPaths(api);
      expect(result).toStrictEqual(paths);
    });
  });

  describe('getServers()', () => {
    const spec = getSpec({
      servers: [
        {
          url: 'https://server1.com/path',
        },
      ],
      paths: {
        '/': {
          servers: [
            {
              url: 'https://server2.com/path',
            },
          ],
        },
      },
    });

    it('returns path item servers', () => {
      const result = getServers(spec.paths['/']);
      expect(result).toEqual([
        {
          url: 'https://server2.com/path',
        },
      ]);
    });

    it('returns api servers', () => {
      const result = getServers(spec);
      expect(result).toEqual([
        {
          url: 'https://server1.com/path',
        },
      ]);
    });
  });

  describe('getSecurity()', () => {
    it('returns security from operation', () => {
      const operation: OA3Operation = {
        security: [
          {
            petstoreAuth: [],
          },
        ],
        responses: {},
      };
      const result = getSecurity(operation);
      expect(result).toEqual([
        {
          petstoreAuth: [],
        },
      ]);
    });

    it('returns security from api', () => {
      const spec = getSpec({
        servers: [
          {
            url: 'https://server1.com/path',
          },
        ],
        paths: {
          '/': {
            post: {
              security: [
                {
                  petstoreAuth: [],
                },
              ],
              responses: {},
            },
          },
        },
        security: [
          {
            anotherAuth: [],
          },
        ],
        components: {
          securitySchemes: {
            petstoreAuth: {
              type: 'http',
              scheme: 'basic',
              name: 'name',
            },
            anotherAuth: {
              type: 'http',
              scheme: 'basic',
              name: 'another-name',
            },
          },
        },
      });
      const result = getSecurity(spec);
      expect(result).toEqual([
        {
          anotherAuth: [],
        },
      ]);
    });
  });

  describe('getName()', () => {
    it('openapi object with x-kong-name', () => {
      const spec = getSpec({ [xKongName]: 'override' });
      const result = getName(spec);
      expect(result).toBe('override');
    });

    it('openapi object without x-kong-name', () => {
      const spec = getSpec();
      const result = getName(spec);
      expect(result).toBe('My_API');
    });

    it('openapi object without anything', () => {
      const spec = getSpec({
        info: {
          version: '1.0.0',
        },
      });
      const result = getName(spec);
      expect(result).toBe('openapi');
      const result2 = getName(spec, 'Another Default');
      expect(result2).toBe('Another_Default');
    });

    it('works with slugify options', () => {
      const spec = getSpec({ [xKongName]: 'This Needs Slugify' });
      const result = getName(spec, '', {
        replacement: '?',
        lower: true,
      });
      expect(result).toBe('this?needs?slugify');
    });
  });

  describe('generateSlug()', () => {
    it('passes basic cases', () => {
      expect(generateSlug('foo')).toBe('foo');
      expect(generateSlug('foo bar')).toBe('foo_bar');
      expect(generateSlug('foo, bar')).toBe('foo_bar');
      expect(generateSlug('Foo Bar')).toBe('Foo_Bar');
      expect(
        generateSlug('foo bar', {
          replacement: '?',
        }),
      ).toBe('foo?bar');
      expect(
        generateSlug('FOO Bar', {
          lower: true,
        }),
      ).toBe('foo_bar');
    });
  });

  describe('fillServerVariables()', () => {
    it('parses basic url', () => {
      const server = {
        url: 'https://swagger.io/v1',
      };
      expect(fillServerVariables(server)).toBe('https://swagger.io/v1');
    });

    it('replaces variables', () => {
      const server = {
        url: 'https://{subdomain}.swagger.io/v1',
        variables: {
          subdomain: {
            default: 'petstore',
          },
        },
      };
      expect(fillServerVariables(server)).toBe('https://petstore.swagger.io/v1');
    });

    it('fails with no default value', () => {
      const server: OA3Server = {
        url: 'https://{subdomain}.swagger.io/v1',
        variables: {
          // @ts-expect-error intentionally invalid - missing a required property, `default`
          subdomain: {
            enum: ['petstore'],
          },
        },
      };

      const fn = () => fillServerVariables(server);

      expect(fn).toThrowError('Server variable "subdomain" missing default value');
    });
  });

  describe('pathVariablesToRegex()', () => {
    it('converts variables to regex path', () => {
      expect(pathVariablesToRegex('/foo/{bar}/{baz}')).toBe(
        '/foo/(?<bar>[^\\/]+)/(?<baz>[^\\/]+)$',
      );
    });

    it('does not convert to regex if no variables present', () => {
      expect(pathVariablesToRegex('/foo/bar/baz')).toBe('/foo/bar/baz$');
    });
  });

  describe('getPluginNameFromKey()', () => {
    it('should remove x-kong-plugin- prefix to extract name', () => {
      expect(getPluginNameFromKey('x-kong-plugin-name')).toBe('name');
    });
  });

  describe('isPluginKey()', () => {
    it('should be true if key is prefixed by x-kong-plugin-', () => {
      expect(isPluginKey('x-kong-plugin-name')).toBe(true);
    });

    it('should be false if key is not prefixed by x-kong-plugin-', () => {
      expect(isPluginKey(xKongName)).toBe(false);
    });
  });

  const methods: HttpMethodType[] = [
    'GET',
    'PUT',
    'POST',
    'DELETE',
    'OPTIONS',
    'HEAD',
    'PATCH',
    'TRACE',
  ];

  describe('isHttpMethodKey()', () => {
    it.each(methods)('should be true for %o', method => {
      expect(isHttpMethodKey(method)).toBe(true);
    });

    it('should be false for non http method key', () => {
      expect(isHttpMethodKey('test')).toBe(false);
    });
  });

  describe('getMethodAnnotationName', () => {
    it.each(methods)('should suffix with -method and lowercase: %o', method => {
      expect(getMethodAnnotationName(method)).toBe(`${method}-method`.toLowerCase());
    });
  });

  describe('parseUrl()', () => {
    it('returns / for pathname if no path', () => {
      const result = parseUrl('http://api.insomnia.rest');
      expect(result.pathname).toBe('/');
    });

    it('returns localhost if not given', () => {
      const result = parseUrl('/just/a/path');
      expect(result.host).toBe('localhost:80');
    });

    it('returns no port in host if neither port nor recognized protocol given', () => {
      const result = parseUrl('tcp://api.insomnia.rest/just/a/path');
      expect(result.host).toBe('api.insomnia.rest');
    });

    it('returns default port in host if protocol given', () => {
      const result = parseUrl('https://api.insomnia.rest/just/a/path');
      expect(result.host).toBe('api.insomnia.rest:443');
    });

    it('returns pathname if defined in url', () => {
      const result = parseUrl('http://api.insomnia.rest/api/v1');
      expect(result.pathname).toBe('/api/v1');
    });
  });

  describe('hasUpstreams()', () => {
    it('given no server.url item should have no upstreams', () => {
      expect(hasUpstreams({ servers:[] } as any)).toBe(false);
    });
    it('given one server.url item should have no upstreams', () => {
      expect(hasUpstreams({ servers:[{ url:'/test1' }] } as any)).toBe(false);
    });
    it('given one server.url item and x-kong-upstream-defaults should have upstreams', () => {
      expect(hasUpstreams({ servers:[{ url:'/test1' }], 'x-kong-upstream-defaults':{} } as any)).toBe(true);
    });
    it('given multiple server.url items should have upstreams', () => {
      expect(hasUpstreams({ servers:[{ url:'/test1' }, { url:'/test2' }] } as any)).toBe(true);
    });
  });

  describe('distinctByProperty()', () => {
    it('returns empty array if no truthy items', () => {
      expect(distinctByProperty([], i => i)).toHaveLength(0);
      expect(distinctByProperty([undefined], i => i)).toHaveLength(0);
      expect(distinctByProperty([null, undefined, ''], i => i)).toHaveLength(0);
    });

    it('should remove objects with the same property selector - removes 2/4', () => {
      const item1 = {
        name: 'a',
        value: 'first',
      };
      const item2 = {
        name: 'a',
        value: 'second',
      };
      const item3 = {
        name: 'b',
        value: 'third',
      };
      const item4 = {
        name: 'b',
        value: 'fourth',
      };
      const items = [item1, item2, item3, item4];
      // distinct by the name property
      const filtered = distinctByProperty(items, i => i.name);
      // Should remove item2 and item4
      expect(filtered).toEqual([item1, item3]);
    });

    it('should remove objects with the same property selector - removes none', () => {
      const item1 = {
        name: 'a',
        value: 'first',
      };
      const item2 = {
        name: 'a',
        value: 'second',
      };
      const item3 = {
        name: 'b',
        value: 'third',
      };
      const item4 = {
        name: 'b',
        value: 'fourth',
      };
      const items = [item1, item2, item3, item4];
      // distinct by the value property
      const filtered = distinctByProperty(items, i => i.value);
      // Should remove no items
      expect(filtered).toEqual(items);
    });
  });
});


text:
Precompile Ractive template.

## Installation

```bash
npm install --save ractive # not included!
npm install --save-dev rollup-plugin-ractivec
```

## Usage

```js
import { rollup } from 'rollup';
import ractivec from 'rollup-plugin-ractivec';

rollup({
  entry: 'src/main.js',
  plugins: [
    ractivec({
      // By default, all .html files are compiled
      extensions: [ '.html', '.ract', '.tpl' ],

      // You can restrict which files are compiled
      // using `include` and `exclude`
      include: 'src/templates/**.html'
    })
  ]
}).then(...)
```

## License

MIT


text:
<?php
Class Seo_model extends MY_Model {
	public $table      = 'babes_seo_page_meta';
	public $primary_key = "id";
	public $soft_deletes = TRUE;
	public $limit = 10;
	public function __construct(){
		parent::__construct();
	}

	/**
	 * @Function		-: getAllPages();
	 * @Description		-: This function used for get and return pages
	 * @Param			-: id(int),pageName(string),pageUrl(string)
	 * @Created on		-: 29-07-2016
	 * @Return			-: array/false
	 */
	public function getAllPages($id=0,$pageName=NULL,$pageUrl=NULL){
		try{
			$record = $this->db->where('deleted_at',NULL);
					if(!empty($id) && is_numeric($id)){
						$record->where('id',$id);
					}
					if($pageName){
						$record->where('page_name',$pageName);
					}
					if($pageUrl){
						$record->where('page_url',$pageUrl);
					}
					if(!empty($id) && is_numeric($id)){
						$records = $record->get('babes_seo_page_meta')->row();
					}else{
						$records = $record->get('babes_seo_page_meta')->result();
					}
			if($records){
				return $records;
			}else{
				return false;
			}
		}catch(Exception	$ex){
			log_message('error',' Unable to fetching pages details '.$ex->getMessage());
		}
	}

	/**
	 * @Function		-: managePageMeta();
	 * @Description		-: This function used for add/update indivisual page meta
	 * @Param			-: id (int),postData(array)
	 * @Created on		-: 29-07-2016
	 * @Return			-: insertedId/false
	 */

	public function managePageMeta($postData=array(),$id=0){
		try{
			if(!empty($postData)){
				$postData['page_name'] = strtolower($postData['page_name']);
				$postData['page_url'] = trim($postData['page_url']);
				$conditions = array('page_name'=>strtolower($postData['page_name']),'page_url'=>$postData['page_url']);
				if(!empty($id) && is_numeric($id)){
					//****** Update Page content ******//
					$check	= $this->Seo_model->where('id !=',$id)->where($conditions)->get_all();
					if($check){
						setMessage('Page already exists !','warning');
						return false;
					}else{
						$update	= $this->Seo_model->where('id',$id)->update($postData);
						if($update){
							setMessage('Page Meta successfully updated','success');
							return $id;
						}
					}
				}else{
					//****** Insert Page content ******//
					$check	= $this->Seo_model->where($conditions)->get_all();
					if($check){
						setMessage('Page already exists !','warning');
						return false;
					}else{
						$insert	= $this->Seo_model->insert($postData);
						if($insert){
							setMessage('Page successfully inserted','success');
							return $insert;
						}
					}
				}
			}else{
				return false;
			}
		}catch(Exception $ex){
			log_message('error ',' Unable to insert page meta '.$ex->getMessage());
			return false;
		}
	}

	/**
	 * @Function		-: manageGoogleAnalyticCode()
	 * @Description		-: This function managing the google analytics code
	 * @Param			-: data (array)
	 * @Created on		-: 04-08-2016
	 * @Return			-: True/False
	 */

	function manageGoogleAnalyticCode($data=array()){
		try{
			$analyticCode = $this->getGoogleAnalyticCode();
			$code = "";
			if(!empty($analyticCode)){
				$code = $analyticCode;
			}
			if($code==$data['code']){
				return true;
			}else{
				$update	= $this->db->update('babes_google_analytics',array('status'=>'0','updated_by'=>$data['updated_by']));
				$insert	= $this->db->insert('babes_google_analytics',$data);
				if($insert){
					return true;
				}
			}
		}catch(Exception	$ex){
			log_message('error ',' Unable to manage google analytic code '.$ex->getMessage());
			return false;
		}
	}

	/**
	 * @Function		-: getGoogleAnalyticCode()
	 * @Description		-: This function get the google analytics code
	 * @Param			-: No Parameter
	 * @Created on		-: 04-08-2016
	 * @Return			-: True/False
	 */

	function getGoogleAnalyticCode(){
		try{
			$analyticCode = $this->db->select('code')->where('status',1)
							->get('babes_google_analytics')->row();
			if($analyticCode){
				$code = $analyticCode->code;
				$code = !empty($code) ? $code : '';
				return $code;
			}else{
				return false;
			}
		}catch(Exception	$ex){
			log_message('error ',' Unable to get google analytic code '.$ex->getMessage());
			return false;
		}
	}

	/**
	 * @Function		-: getPreviousGoogleAnalyticCode()
	 * @Description		-: This function get and return the google analytics code
	 * @Param			-: No Parameter
	 * @Created on		-: 04-08-2016
	 * @Return			-: array()
	 */

	function getPreviousGoogleAnalyticCode(){
		try{
			$analyticCode = $this->db->select('code,updated_at')->where('status','0')
							->limit(1)->order_by('id','DESC')
							->get('babes_google_analytics')->row();
			if($analyticCode){
				return $analyticCode;
			}else{
				return false;
			}
		}catch(Exception	$ex){
			log_message('error ',' Unable to get previous google analytic code '.$ex->getMessage());
			return false;
		}
	}

}

?>


text:
CORS is a browser-standard mechanism provided by the World Wide Web Consortium \(W3C\). It defines the interaction methods between client-side web applications in one origin and resources in another origin. For general web page requests, website scripts and contents in one origin cannot interact with those in another origin because of Same Origin Policies \(SOPs\).

The CORS specification is supported to allow cross-origin requests to access OBS resources.

Typical application scenarios of CORS are as follows:

-   Enables JavaScript and HTML5 to be used for establishing web applications that can directly access resources in OBS. No proxy servers are required for transfer.
-   Enables the dragging function of HTML5 to be used to upload files to OBS \(with the upload progress displayed\) or update OBS contents using web applications.
-   Hosts external web pages, style sheets, and HTML5 applications in different origins. Web fonts or pictures in OBS can be shared by multiple websites.

The configuration of CORS takes effect within two minutes.


text:
package rv;

import javax.media.opengl.GL2;
import rv.ui.UserInterface;
import rv.world.WorldModel;

/**
 * Interface for classes that should be updated in the main update loop
 *
 * @author Justin Stoecker
 */
public interface IUpdatable {
	/**
	 * Allows a module to update its state.
	 *
	 * @param world
	 *            - world model state
	 * @param ui
	 *            - user interface
	 * @param elapsedMS
	 *            - milliseconds since previous update
	 */
	void update(GL2 gl, WorldModel world, UserInterface ui, double elapsedMS);
}


text:
package sha1

var block = blockGeneric


text:
/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
var ContextDependency = require("./ContextDependency");

function RequireContextDependency(request, recursive, regExp, range) {
	ContextDependency.call(this, request, recursive, regExp);
	this.range = range;
	this.Class = RequireContextDependency;
}
module.exports = RequireContextDependency;

RequireContextDependency.prototype = Object.create(ContextDependency.prototype);
RequireContextDependency.prototype.constructor = RequireContextDependency;
RequireContextDependency.prototype.type = "require.context";

RequireContextDependency.Template = require("./ModuleDependencyTemplateAsRequireId");


text:
package org.apache.polygene.library.sql.generator.implementation.grammar.booleans;

import org.apache.polygene.library.sql.generator.grammar.booleans.GreaterOrEqualPredicate;
import org.apache.polygene.library.sql.generator.grammar.common.NonBooleanExpression;
import org.apache.polygene.library.sql.generator.implementation.transformation.spi.SQLProcessorAggregator;

/**
 * @author Stanislav Muhametsin
 */
public class GreaterOrEqualPredicateImpl extends BinaryPredicateImpl<GreaterOrEqualPredicate>
    implements GreaterOrEqualPredicate
{

    public GreaterOrEqualPredicateImpl( SQLProcessorAggregator processor, NonBooleanExpression left,
                                        NonBooleanExpression right )
    {
        this( processor, GreaterOrEqualPredicate.class, left, right );
    }

    protected GreaterOrEqualPredicateImpl( SQLProcessorAggregator processor,
                                           Class<? extends GreaterOrEqualPredicate> predicateClass, NonBooleanExpression left, NonBooleanExpression right )
    {
        super( processor, predicateClass, left, right );
    }
}


text:
\label{chap:method}

The idea of formalizing a functional language in multiple theorem provers and objectively assessing the merits and pitfalls of the different formalizations is definitely not a new idea. The most well known attempt to do so on a larger scale is the $\poplm$ challenge, proposed in the "Mechanized Metatheory for the Masses: The $\poplm$ Challenge" paper by @aydemir05.
This paper prompted several formalizations of the benchmark typed $\lambda$-calculus, proposed by the authors of the challenge, in multiple theorem provers, such as Coq, Isabelle, Matita or Twelf. However, to the best of our knowledge, there has been no published follow-up work, drawing conclusions about the aptitude of different mechanizations, which would be useful in deciding on the best mechanization approach to take in formalizing the $\lamy$ calculus.
This project definitely does not aim to answer the same question as the original challenge, namely:

> "How close are we to a world where every paper on programming languages is accompanied by an electronic appendix with machine- checked proofs?" (@aydemir05)

Instead, it draws inspiration from the criteria for the "benchmark mechanization", specified by the challenge, to find the best mechanization approach as well as the right set of tools for our purpose of effectively mechanizing the theory underpinning HOMC.

Our comparison proceeded in two stages of elimination, where the first stage was a comparison of the two chosen mechanizations of binders for the $\lamy$ calculus (\cref{chap:compIsa}), namely nominal set and locally nameless representations of binders. The main reason for the fairly narrow selection of only two binder mechanizations was the limited time available for this project. In order to at least partially achieve the goal of mechanizing the intersection type theory for the $\lamy$ calculus, we decided to cut down the number of comparisons to the two (seemingly) most popular binder mechanizations (chosen by word of mouth and literature review of the field).
After comparing and choosing the optimal mechanization of binders, \cref{chap:compAgda} then goes on to compare this mechanization in two different theorem provers, Isabelle and Agda (again, only two choices due to limited time).
The "winning" theorem prover from this round was finally used to formalize intersection-types and the proofs of subject invariance.

##Evaluation criteria

The $\poplm$ challenge stated three main criteria for evaluating the submitted mechanizations of the benchmark calculus:

- Mechanization/implementation overheads
- Technology transparency
- Cost of entry

This project focuses mainly on the two criteria of mechanization overheads and technology transparency, since the focus of our comparison is to choose the best mechanization and theorem prover to use for implementing intersection types for the $\lamy$ calculus, rather than asses the viability of theorem provers in general, which was the original goal of the $\poplm$ challenge. These criteria are described in greater detail below:

###Technology transparency

Technology transparency, within the context of this work, is mostly concerned with the presentation of the theory inside a proof assistant, such as Isabelle or Agda. When we talk about transparency, we are concerned with how close the informal presentation is to the implementation, i.e. how difficult is it for someone with no knowledge/experience with the prover, to read and understand the definitions.
Whilst there is no direct measure of transparency, per se, it is almost always immediately obvious which presentation is more transparent, when one is presented with comparative examples. This work makes a case for transparency, or the lack thereof, by providing side-by-side snippets from different mechanizations of the same theory.

\label{Example:sqareOdd}
To demonstrate this, we examine the two different (though not completely distinct) styles of writing proofs in Isabelle, namely using apply-style proofs or the Isar proof language.
First, to demonstrate the Isar proof language and showcase the technology transparency it affords, we examine the proof that a square of an odd number is itself odd\footnotemark and then present the mechanized version of this proof in Isar.

By definition, if $n$ is an odd integer, it can be expressed as

\begin{center}
$n=2k+1$
\end{center}

for some integer $k$. Thus

\begin{center}
$\begin{aligned}
n^{2}&=(2k+1)^{2}\\
&=(2k+1)(2k+1)\\
&=4k^{2}+2k+2k+1\\
&=4k^{2}+4k+1\\
&=2(2k^{2}+2k)+1.
\end{aligned}$
\end{center}

Since $2k^2 + 2k$ is an integer, $n^2$ is also odd.

Now, the same (albeit slightly simplified) proof is presented using the Isar language:

~~~{.isabelle}
lemma sq_odd:
  fixes n and odd :: "nat ⇒ bool"
  defines "odd x ≡ ∃k. x = 2 * k + 1"
  assumes "odd n"
  shows "odd (n*n)"
proof -
  from assms obtain k where n_def: "n = 2 * k + 1"
    unfolding odd_def by auto
  then have "n * n = (2 * k + 1) * (2 * k + 1)" by simp
  then have "n * n = (4 * k * k) + (4 * k) + 1" by simp
  hence     "n * n = 2 * ((2 * k * k) + (2 * k)) + 1" by simp
  thus "odd (n * n)" unfolding odd_def by blast
qed
~~~

Clearly, this mechanized proof reads much like the rigorous paper proof that precedes it.
When the same proof is presented using the apply-style proof in Isabelle, it is immediately apparent that it is much less transparent, as we obfuscate the natural flow of the informal proof, hiding most of the reasoning in automation (the last line `by simp+`):

~~~{.isabelle}
lemma sq_odd: "⋀n :: nat. (∃k. n = 2 * k + 1) ⟹ ∃k. n * n = 2 * k + 1"
apply (erule_tac P="λk. n = 2 * k + 1" in exE)
apply (rule_tac x="(2 * x * x) + (2 * x)" in exI)
apply (rule_tac s="(2 * x + 1) * (2 * x + 1)" in subst)
by simp+
~~~

While this example might be slightly exaggerated, it clearly demonstrates the relative lack of human readability, comapred to the Isar proof.
$\ $

The whole apply-style script can in fact just be substituted by the single line command: `by (auto, presburger)
`)

\footnotetext{The informal proof was copied from \url{https://en.wikipedia.org/wiki/Direct_proof}}

The example given above demonstrates, that transparency is a comparative measure, as it depends directly on some point of reference. As is also apparent from the example, transparency can often come at a cost of brevity. The reason why apply-style proofs exist and are used, even though Isar proofs are generally regarded as the better alternative, is the fact that they can be significantly faster to write, as they are a lot less verbose. Of course, relying more on automation, these proofs naturally tend to be harder to follow. However, much like in an informal setting, where we rarely write proofs in a completely rigorous detail, especially those which are "uninteresting" from point of the whole theory, so the different styles of proofs are used for different proofs. The short, "boring" ones are often written using apply-style scripts, whereas longer more interesting lemmas use the Isar language, to make the reasoning intuitive, i.e. transparent.
This trade-off brings us to the second criterion, namely the mechanization overheads.

###Mechanization/implementation overheads
\label{mechOverheads}

When talking about mechanization overheads, we usually mean the additional theory needed to translate the informal definitions we reason about on paper into the fully formal setting of a theorem prover.

\label{Example:listITypes}
To demonstrate what we mean by this, we will take the definition of intersection types and its implmentation in Agda (further discussed in \cref{itypesAgda}). Taking the \cref{Definition:itypes} as a starting point, namely defining intersection types as:

\begin{center}
$\begin{aligned}
\mathcal{T}_s &::= \phi\ |\ \mathcal{T} \leadsto \mathcal{T}_s \\
\mathcal{T} &::= (\mathcal{T}_s \cap\hdots\cap \mathcal{T}_s)
\end{aligned}$
\end{center}

we translate the strict types $\mathcal{T}_s$ to a definition in Agda in a straightforward way, since we only need to translate$\mathcal{T}_s$ into a GADT (generalized algebraic datatype) definition:

~~~{.agda escapeinside=||}
data T|$_\texttt{s}$| where
  φ : T|$_\texttt{s}$|
  _~>_ : (τ : T) -> (ψ : T|$_\texttt{s}$|) -> T|$_\texttt{s}$|
~~~
$\ $

The definition above is perhaps more obvious, when $\mathcal{T}_s$ is presented inductively as:
\begin{center}
  \AxiomC{}
  \UnaryInfC{$\phi \in \mathcal{T}_s$}
  \DisplayProof
  \hskip 1.5em
  \AxiomC{$\tau \in \mathcal{T}$}
  \AxiomC{$\psi \in \mathcal{T}_s$}
  \BinaryInfC{$\tau \leadsto \psi \in \mathcal{T}_s$}
  \DisplayProof
\end{center}

The informal definition of $\mathcal{T}$, however, is slightly more complicated, since intuitively, $\mathcal{T}_s \cap\hdots\cap \mathcal{T}_s$ represents a finite set of elements of $\mathcal{T}_s$. We can describe the set of intersection terms $\mathcal{T}$ with the following inductive definition:

\begin{center}
  \AxiomC{$\{\tau_1, \hdots, \tau_n\} \subset \mathcal{T}_s$}
  \UnaryInfC{$\tau_1 \cap\hdots\cap \tau_n \in \mathcal{T}$}
  \DisplayProof
\end{center}

In order to encode this definition in Agda, we will have to rely on some definition of a finite set (since the rule above assumes knowledge of finite sets and the subset relation $\subset$ in its precondition).
Whilst the notion of a finite set is so trivial, we rarely bother axiomatizing it, Agda does not actually know about finite sets by default and its standard library only includes the definition of finite sets of natural numbers. We can instead use lists to "simulate" finite sets, as they are similar in many regards, i.e. the Agda implementation of lists includes the notion of subset inclusion for lists, so that one can write a proof of $[1,2] \subseteq [2,2,1]$ easily. Thus, for $\mathcal{T}$, we get:

~~~{.agda escapeinside=||}
data T where
  ∩ : List T|$_\texttt{s}$| -> T
~~~

Whilst this definition is now largely equivalent to the informal inductive definition, we have lost quite a bit of transparency as a result. Consider the strict type $\tau \cap \psi \leadsto \tau$, is written as `∩ (τ ∷ ψ ∷ [])  \textasciitilde > τ` in Agda. We can improve things somewhat by getting rid of the pointless constructor `∩` and merging the two definitions of $\mathcal{T}$ and $\mathcal{T}_s$ into a single definition, namely:

~~~{.agda escapeinside=||}
data T|$_\texttt{s}$| where
  φ : T|$_\texttt{s}$|
  _~>_ : (τ : List T|$_\texttt{s}$|) -> (ψ : T|$_\texttt{s}$|) -> T|$_\texttt{s}$|
~~~
$\ $

This definition now corresponds to the merging of the two previously given inductive definitions of $\mathcal{T}$ and $\mathcal{T}_s$:
\begin{center}
  \AxiomC{}
  \UnaryInfC{$\phi \in \mathcal{T}_s$}
  \DisplayProof
  \hskip 1.5em
  \AxiomC{$\{\tau_1, \hdots, \tau_n\} \subset \mathcal{T}_s$}
  \AxiomC{$\psi \in \mathcal{T}_s$}
  \BinaryInfC{$\tau_1 \cap\hdots\cap \tau_n \leadsto \psi \in \mathcal{T}_s$}
  \DisplayProof
\end{center}

Now, $\tau \cap \psi \leadsto \tau$, corresponds to the Agda term `(τ ∷ ψ ∷ [])  \textasciitilde > τ`, which is still not ideal. We can, however, define some simple sugar notation:

~~~{.agda escapeinside=||}
_∩_ : T|$_\texttt{s}$| -> T|$_\texttt{s}$| -> List T|$_\texttt{s}$|
τ ∩ ψ = τ ∷ ψ ∷ []
~~~

Thus, we finally get the Agda term `τ ∩ ψ \textasciitilde > τ` which now clearly corresponds to $\tau\ \cap\ \psi \leadsto \tau$.

As the above example clearly shows, the first/simplest measure of the amount of implementation overheads, is simply the length of the code/proof scrips, defining the terms and lemmas of a theory.
Whilst the length of code might provide an indication of the possible level of implementation overheads, it is important to keep in mind, that brevity of code can often also depend on the level of transparency, as evidenced by both \cref{Example:sqareOdd} and the one above, where the shorter code turned out to also be the less transparent one. Depending on the priorities, we therefore often sacrifice either transparency for brevity or vice versa (which can greatly impact this simple metric for overheads).
Therefore, instead of simply looking at the length of the produced document, we also compare the number of lemmas, disregarding the length of each one. Even though this measure also carries disadvantages (one could, for example, in-line the whole Church Rosser proof into one giant lemma) it is less sensitive in regard to transparency.

Another aspect which ties into both transparency and mechanization overheads is the level of automation. As was demonstrated by \cref{Example:sqareOdd}, wherein the lemma could in fact be proved automatically with almost no user input, having low implementation overheads (in proofs) is often tied to the level of automation the tool provides.
More concretely, a tool with good automation will include a standard library of common definitions and theorems, so that the user does not have to re-define and re-prove basic mathematical object and properties and instead can focus on the specific theory she/he wants to implement.
This is indeed largely the reason why we used Isabelle along with the [nominal sets library](http://www.inf.kcl.ac.uk/staff/urbanc/Nominal/), maintained by Christian Urban, where the theory was conveniently hidden away and managed for us by Isabelle's automatic provers, so that our mechanization overheads were minimal. However, there were several caveats to this, which we discuss in the next chapter.
On the other hand, the choice of locally nameless encoding, as opposed to using pure de Bruijn indices, was motivated by the claim that locally nameless encoding largely mitigates the disadvantages of de Bruijn indices especially when it comes to technology transparency. The LN encoding is also a lot more bare-bones than the nominal set theory (if there was not library and one had to formalize the theory from scratch), carrying relatively manageable overheads.
Where automation/mechanization overheads and transparency clashed, we sided with a more transparent mechanization, often choosing to keep some lemmas (especially in the nominal implementation) deliberately verbose. The reason for this was out aim, to make this formalization more accessible to the HOMC community, by trying to make these theory files useful/readable even to people with little prior knowledge of theorem provers.


text:
ACCEPTED

#### According to
Index Fungorum

#### Published in
null

#### Original name
Micropeltis caesalpiniae Tassi

### Remarks
null