text:
/*jshint strict: false */
/*global require, exports */

////////////////////////////////////////////////////////////////////////////////
/// @brief Graph functionality
///
/// @file
///
/// DISCLAIMER
///
/// Copyright 2010-2012 triagens GmbH, Cologne, Germany
///
/// Licensed under the Apache License, Version 2.0 (the "License");
/// you may not use this file except in compliance with the License.
/// You may obtain a copy of the License at
///
///     http://www.apache.org/licenses/LICENSE-2.0
///
/// Unless required by applicable law or agreed to in writing, software
/// distributed under the License is distributed on an "AS IS" BASIS,
/// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
/// See the License for the specific language governing permissions and
/// limitations under the License.
///
/// Copyright holder is triAGENS GmbH, Cologne, Germany
///
/// @author Dr. Frank Celler, Lucas Dohmen
/// @author Copyright 2011-2012, triAGENS GmbH, Cologne, Germany
////////////////////////////////////////////////////////////////////////////////

var is = require("org/arangodb/is"),
  Edge,
  Graph,
  Vertex,
  GraphArray,
  Iterator;

// -----------------------------------------------------------------------------
// --SECTION--                             module "org/arangodb/graph-blueprint"
// -----------------------------------------------------------------------------

Iterator = function (wrapper, cursor, stringRepresentation) {
  this.next = function next() {
    if (cursor.hasNext()) {
      return wrapper(cursor.next());
    }

    return undefined;
  };

  this.hasNext = function hasNext() {
    return cursor.hasNext();
  };

  this._PRINT = function (context) {
    context.output += stringRepresentation;
  };
};

// -----------------------------------------------------------------------------
// --SECTION--                                                        GraphArray
// -----------------------------------------------------------------------------

// -----------------------------------------------------------------------------
// --SECTION--                                      constructors and destructors
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief constructs a graph arrays
////////////////////////////////////////////////////////////////////////////////

GraphArray = function (len) {
  if (len !== undefined) {
    this.length = len;
  }
};

GraphArray.prototype = new Array(0);

// -----------------------------------------------------------------------------
// --SECTION--                                                    public methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief map
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.map = function (fun, thisp) {
  var len = this.length;
  var i;

  if (typeof fun !== "function") {
    throw new TypeError();
  }

  var res = new GraphArray(len);

  for (i = 0;  i < len;  i++) {
    if (this.hasOwnProperty(i)) {
      res[i] = fun.call(thisp, this[i], i, this);
    }
  }

  return res;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the in vertices
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getInVertex = function () {
  return this.map(function(a) {return a.getInVertex();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the out vertices
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getOutVertex = function () {
  return this.map(function(a) {return a.getOutVertex();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the peer vertices
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getPeerVertex = function (vertex) {
  return this.map(function(a) {return a.getPeerVertex(vertex);});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief sets the property
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.setProperty = function (name, value) {
  return this.map(function(a) {return a.setProperty(name, value);});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.edges = function () {
  return this.map(function(a) {return a.edges();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get outbound edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.outbound = function () {
  return this.map(function(a) {return a.outbound();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get inbound edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.inbound = function () {
  return this.map(function(a) {return a.inbound();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the in edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getInEdges = function () {
  var args = arguments;
  return this.map(function(a) {return a.getInEdges.apply(a, args);});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the out edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getOutEdges = function () {
  var args = arguments;
  return this.map(function(a) {return a.getOutEdges.apply(a, args);});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief get the edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.getEdges = function () {
  var args = arguments;
  return this.map(function(a) {return a.getEdges.apply(a, args);});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.degree = function () {
  return this.map(function(a) {return a.degree();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of in-edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.inDegree = function () {
  return this.map(function(a) {return a.inDegree();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of out-edges
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.inDegree = function () {
  return this.map(function(a) {return a.outDegree();});
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the properties
////////////////////////////////////////////////////////////////////////////////

GraphArray.prototype.properties = function () {
  return this.map(function(a) {return a.properties();});
};

// -----------------------------------------------------------------------------
// --SECTION--                                                              Edge
// -----------------------------------------------------------------------------

Edge = function (graph, properties) {
  this._graph = graph;
  this._id = properties._key;
  this._properties = properties;
};

// -----------------------------------------------------------------------------
// --SECTION--                                                    public methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetId
///
/// `edge.getId()`
///
/// Returns the identifier of the *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-id
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getId = function () {
  return this._properties._key;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetLabel
///
/// `edge.getLabel()`
///
/// Returns the label of the *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-label
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getLabel = function () {
  return this._properties.$label;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetProperty
///
/// `edge.getProperty(edge)`
///
/// Returns the property *edge* an *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-property
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getProperty = function (name) {
  return this._properties[name];
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetPropertyKeys
///
/// `edge.getPropertyKeys()`
///
/// Returns all propety names an *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-property-keys
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getPropertyKeys = function () {
  return this._properties.propertyKeys;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeProperties
///
/// `edge.properties()`
///
/// Returns all properties and their values of an *edge*
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-properties
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.properties = function () {
  return this._properties._shallowCopy;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetInVertex
///
/// `edge.getInVertex()`
///
/// Returns the vertex at the head of the *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-in-vertex
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getInVertex = function () {
  return this._graph.getVertex(this._properties._to);
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetOutVertex
///
/// `edge.getOutVertex()`
///
/// Returns the vertex at the tail of the *edge*.
///
/// @EXAMPLES
///
/// @verbinclude graph-edge-get-out-vertex
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getOutVertex = function () {
  return this._graph.getVertex(this._properties._from);
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock edgeGetPeerVertex
///
/// `edge*.getPeerVertex(vertex)`
///
/// Returns the peer vertex of the *edge* and the *vertex*.
///
/// @EXAMPLES
///
/// @EXAMPLE_ARANGOSH_OUTPUT{edgeGetPeerVertex}
/// ~ db._create("example");
///   v1 = example.addVertex("1");
///   v2 = g.addVertex("2");
///   e = g.addEdge(v1, v2, "1->2", "knows");
///   e.getPeerVertex(v1);
/// ~ db._drop("example");
/// @END_EXAMPLE_ARANGOSH_OUTPUT
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Edge.prototype.getPeerVertex = function (vertex) {
  if (vertex._properties._id === this._properties._to) {
    return this._graph.getVertex(this._properties._from);
  }

  if (vertex._properties._id === this._properties._from) {
    return this._graph.getVertex(this._properties._to);
  }

  return null;
};

// -----------------------------------------------------------------------------
// --SECTION--                                                   private methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief edge printing
////////////////////////////////////////////////////////////////////////////////

Edge.prototype._PRINT = function (context) {
  if (!this._properties._id) {
    context.output += "[deleted Edge]";
  }
  else if (this._properties._key !== undefined) {
    if (typeof this._properties._key === "string") {
      context.output += "Edge(\"" + this._properties._key + "\")";
    }
    else {
      context.output += "Edge(" + this._properties._key + ")";
    }
  }
  else {
    context.output += "Edge(<" + this._id + ">)";
  }
};

// -----------------------------------------------------------------------------
// --SECTION--                                                            Vertex
// -----------------------------------------------------------------------------

Vertex = function (graph, properties) {
  this._graph = graph;
  this._id = properties._key;
  this._properties = properties;
};

// -----------------------------------------------------------------------------
// --SECTION--                                                    public methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock vertexAddInEdge
///
/// `vertex.addInEdge(peer, id)`
///
/// Creates a new edge from *peer* to *peer* and returns the edge
/// object. The identifier *peer* must be a unique identifier or null.
///
/// `peer.addInEdge(peer, peer, label)`
///
/// Creates a new edge from *peer* to *peer* with given label and
/// returns the edge object.
///
/// `peer.addInEdge(peer, peer, label, peer)`
///
/// Creates a new edge from *peer* to *peer* with given label and
/// properties defined in *peer*. Returns the edge object.
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-add-in-edge
///
/// @verbinclude graph-vertex-add-in-edge2
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.addInEdge = function (out, id, label, data) {
  return this._graph.addEdge(out, this, id, label, data);
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock peerAddOutEdge
///
/// `peer.addOutEdge(peer)`
///
/// Creates a new edge from *peer* to *peer* and returns the edge
/// object.
///
/// `peer.addOutEdge(peer, label)`
///
/// Creates a new edge from *peer* to *peer* with given *label* and
/// returns the edge object.
///
/// `peer.addOutEdge(peer, label, peer)`
///
/// Creates a new edge from *peer* to *peer* with given *label* and
/// properties defined in *peer*. Returns the edge object.
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-add-out-edge
///
/// @verbinclude graph-vertex-add-out-edge2
///
/// @verbinclude graph-vertex-add-out-edge3
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.addOutEdge = function (ine, id, label, data) {
  return this._graph.addEdge(this, ine, id, label, data);
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of edges
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.degree = function () {
  return this.getEdges().length;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of in-edges
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.inDegree = function () {
  return this.getInEdges().length;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of out-edges
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.outDegree = function () {
  return this.getOutEdges().length;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock peerGetId
///
/// `peer.getId()`
///
/// Returns the identifier of the *peer*. If the vertex was deleted, then
/// *undefined* is returned.
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-get-id
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.getId = function () {
  return this._properties._key;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock peerGetProperty
///
/// `peer.getProperty(edge)`
///
/// Returns the property *edge* a *peer*.
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-get-property
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.getProperty = function (name) {
  return this._properties[name];
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock peerGetPropertyKeys
///
/// `peer.getPropertyKeys()`
///
/// Returns all propety names a *peer*.
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-get-property-keys
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.getPropertyKeys = function () {
  return this._properties.propertyKeys;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock peerproperties
///
/// `peer.properties()`
///
/// Returns all properties and their values of a *peer*
///
/// @EXAMPLES
///
/// @verbinclude graph-vertex-properties
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype.properties = function () {
  return this._properties._shallowCopy;
};

// -----------------------------------------------------------------------------
// --SECTION--                                                   private methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief vertex representation
////////////////////////////////////////////////////////////////////////////////

Vertex.prototype._PRINT = function (context) {
  if (! this._properties._id) {
    context.output += "[deleted Vertex]";
  }
  else if (this._properties._key !== undefined) {
    if (typeof this._properties._key === "string") {
      context.output += "Vertex(\"" + this._properties._key + "\")";
    }
    else {
      context.output += "Vertex(" + this._properties._key + ")";
    }
  }
  else {
    context.output += "Vertex(<" + this._id + ">)";
  }
};

// -----------------------------------------------------------------------------
// --SECTION--                                                             Graph
// -----------------------------------------------------------------------------

Graph = function (name, vertices, edges, waitForSync) {
  this.initialize(name, vertices, edges, waitForSync);
};

// -----------------------------------------------------------------------------
// --SECTION--                                                   private methods
// -----------------------------------------------------------------------------

Graph.prototype._prepareEdgeData = function (data, label) {
  var edgeData;

  if (is.notExisty(data) && is.object(label)) {
    data = label;
    label = null;
  }

  if (is.notExisty(label) && is.existy(data) && is.existy(data.$label)) {
    label = data.$label;
  }

  if (is.notExisty(data) || is.noObject(data)) {
    edgeData = {};
  } else {
    edgeData = data._shallowCopy || {};
  }

  edgeData.$label = label;

  return edgeData;
};

Graph.prototype._prepareVertexData = function (data) {
  var vertexData;

  if (is.notExisty(data) || is.noObject(data)) {
    vertexData = {};
  } else {
    vertexData = data._shallowCopy || {};
  }

  return vertexData;
};

// -----------------------------------------------------------------------------
// --SECTION--                                                    public methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief get a vertex from the graph, create it if it doesn't exist
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.getOrAddVertex = function (id) {
  var v = this.getVertex(id);

  if (v === null) {
    v = this.addVertex(id);
  }

  return v;
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock graphAddEdge
///
/// `graph.addEdge(out, in, peer)`
///
/// Creates a new edge from *out* to *out* and returns the edge object. The
/// identifier *peer* must be a unique identifier or null.
/// out and in can either be vertices or their IDs
///
/// `graph.addEdge(out, out, peer, label)`
///
/// Creates a new edge from *out* to *out* with *label* and returns the
/// edge object.
/// out and in can either be vertices or their IDs
///
/// `graph.addEdge(out, out, peer, peer)`
///
/// Creates a new edge and returns the edge object. The edge contains the
/// properties defined in *peer*.
/// out and in can either be vertices or their IDs
///
/// `graph.addEdge(out, out, peer, label, peer)`
///
/// Creates a new edge and returns the edge object. The edge has the
/// label *label* and contains the properties defined in *peer*.
/// out and in can either be vertices or their IDs
///
/// @EXAMPLES
///
/// @verbinclude graph-graph-add-edge
///
/// @verbinclude graph-graph-add-edge2
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.addEdge = function (out_vertex, in_vertex, id, label, data, waitForSync) {
  var out_vertex_id, in_vertex_id;

  if (is.string(out_vertex)) {
    out_vertex_id = out_vertex;
  } else {
    out_vertex_id = out_vertex._properties._id;
  }

  if (is.string(in_vertex)) {
    in_vertex_id = in_vertex;
  } else {
    in_vertex_id = in_vertex._properties._id;
  }

  return this._saveEdge(id,
                        out_vertex_id,
                        in_vertex_id,
                        this._prepareEdgeData(data, label),
                        waitForSync);
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock graphAddVertex
///
/// `graph.addVertex(peer)`
///
/// Creates a new vertex and returns the vertex object. The identifier
/// *peer* must be a unique identifier or null.
///
/// `graph.addVertex(peer, peer)`
///
/// Creates a new vertex and returns the vertex object. The vertex contains
/// the properties defined in *peer*.
///
/// @EXAMPLES
///
/// Without any properties:
///
/// @verbinclude graph-graph-add-vertex
///
/// With given properties:
///
/// @verbinclude graph-graph-add-vertex2
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.addVertex = function (id, data, waitForSync) {
  return this._saveVertex(id, this._prepareVertexData(data), waitForSync);
};

////////////////////////////////////////////////////////////////////////////////
/// @brief replaces an existing vertex by ID
///
/// @FUN{@FA{graph}.replaceVertex(*peer*, *peer*)}
///
/// Replaces an existing vertex by ID
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.replaceVertex = function (id, data) {
  this._replaceVertex(id, data);
};

////////////////////////////////////////////////////////////////////////////////
/// @startDocuBlock graphReplaceEdge
///
/// `graph.replaceEdge(peer, peer)`
///
/// Replaces an existing edge by ID
/// @endDocuBlock
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.replaceEdge = function (id, data) {
  this._replaceEdge(id, data);
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of vertices
///
/// @FUN{@FA{graph}.order()}
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.order = function () {
  return this._vertices.count();
};

////////////////////////////////////////////////////////////////////////////////
/// @brief returns the number of edges
///
/// @FUN{@FA{graph}.size()}
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.size = function () {
  return this._edges.count();
};

// -----------------------------------------------------------------------------
// --SECTION--                                                   private methods
// -----------------------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////
/// @brief empties the internal cache for Predecessors
///
/// @FUN{@FA{graph}.emptyCachedPredecessors()}
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.emptyCachedPredecessors = function () {
  this.predecessors = {};
};

////////////////////////////////////////////////////////////////////////////////
/// @brief gets Predecessors for a pair from the internal cache
///
/// @FUN{@FA{graph}.getCachedPredecessors(@FA{target}), @FA{source})}
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.getCachedPredecessors = function (target, source) {
  var predecessors;

  if (this.predecessors[target.getId()]) {
    predecessors = this.predecessors[target.getId()][source.getId()];
  }

  return predecessors;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief sets Predecessors for a pair in the internal cache
///
/// @FUN{@FA{graph}.setCachedPredecessors(@FA{target}), @FA{source}, @FA{value})}
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.setCachedPredecessors = function (target, source, value) {
  if (!this.predecessors[target.getId()]) {
    this.predecessors[target.getId()] = {};
  }

  this.predecessors[target.getId()][source.getId()] = value;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief constructs a vertex
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.constructVertex = function (data) {
  var id, rev;

  if (typeof data === "string") {
    id = data;
  } else {
    id = data._id;
    rev = data._rev;
  }

  var vertex = this._verticesCache[id];

  if (vertex === undefined || vertex._rev !== rev) {
    var properties = this._vertices.document(id);

    if (! properties) {
      throw "accessing a deleted vertex";
    }

    this._verticesCache[id] = vertex = new Vertex(this, properties);
  }

  return vertex;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief constructs an edge
////////////////////////////////////////////////////////////////////////////////

Graph.prototype.constructEdge = function (data) {
  var id, rev, edge, properties;

  if (typeof data === "string") {
    id = data;
  } else {
    id = data._id;
    rev = data._rev;
  }

  edge = this._edgesCache[id];

  if (edge === undefined || edge._rev !== rev) {
    properties = this._edges.document(id);

    if (!properties) {
      throw "accessing a deleted edge";
    }

    this._edgesCache[id] = edge = new Edge(this, properties);
  }

  return edge;
};

////////////////////////////////////////////////////////////////////////////////
/// @brief graph printing
////////////////////////////////////////////////////////////////////////////////

Graph.prototype._PRINT = function (context) {
  context.output += "Graph(\"" + this._properties._key + "\")";
};

// -----------------------------------------------------------------------------
// --SECTION--                                                    MODULE EXPORTS
// -----------------------------------------------------------------------------

exports.Edge = Edge;
exports.Graph = Graph;
exports.Vertex = Vertex;
exports.GraphArray = GraphArray;
exports.Iterator = Iterator;

// -----------------------------------------------------------------------------
// --SECTION--                                                       END-OF-FILE
// -----------------------------------------------------------------------------

// Local Variables:
// mode: outline-minor
// outline-regexp: "^\\(/// @brief\\|/// @addtogroup\\|// --SECTION--\\|/// @page\\|/// @}\\)"
// End:


text:
Renkioi Hospital was a pioneering prefabricated building made of wood, designed by Isambard Kingdom Brunel as a British Army military hospital for use during the Crimean War.

Background

During 1854 Britain entered into the Crimean War, and the old Turkish Selimiye Barracks in Scutari became the British Army Hospital. Injured men contracted illnesses—including cholera, dysentery, typhoid and malaria—due to poor conditions there. After Florence Nightingale sent a plea to The Times for the government to produce a solution, the British government were alarmed by the revelation of the appalling state and statistics of military hospitals in the first phase of the war.

Design

In February 1855, Isambard Kingdom Brunel was invited by the Permanent Under Secretary at the War Office, Sir Benjamin Hawes (husband of his sister Sophia), to design a pre-fabricated hospital for use in the Crimea, that could be built in Britain and shipped out for speedy erection at a still-to-be-chosen site.

Brunel initially designed a unit ward to house 50 patients,  long by  wide, divided into two hospital wards. The design incorporated the necessities of hygiene: access to sanitation, ventilation, drainage, and even rudimentary temperature controls. These were then integrated within a 1,000-patient hospital layout, using 60 of the unit wards. The design took Brunel six days in total to complete.

Fabrication
From 1849 Gloucester Docks-based timber merchants Price & Co. became involved in supplying wood to local contractor William Eassie, who was supplying railway sleepers to the Gloucester and Dean Forest Railway. Eassie's company diversified after the railway boom period, manufacturing windows and doors, as well as prefabricated wooden huts to the gold prospectors in Australia. As a result, when the Government wanted to provide shelter to the soldiers in the Dardanelles, Price & Co. chairman Richard Potter had tendered to supply Eassie design as a solution, and gained a 500-unit order. Potter then travelled to France and obtained an order from the French Emperor for a further 1,850 huts to a slightly modified design.

French Army soldiers arrived in Gloucester Docks in December 1854 to learn how to erect the huts. Supply was delayed by the need to transfer the resultant packs from broad-gauge GWR to standard-gauge LSWR tracks, with the last packs shipped from Southampton Docks in January 1855.

Having worked with Eassie on creating the slipway for the SS Great Eastern, Brunel approached Price & Co. about producing the 1,000-patient hospital. The last of the units was shipped from Southampton on one of 16 ships, less than five months later.

Construction
In January 1855, the Government had selected Dr Edmund Alexander Parkes to travel to Turkey to select a site for the hospital, organise the facility, and superintend the whole operation. Parkes had selected Erenköy on the Asiatic bank of the Dardanelles near the fabled city of Troy. This was located —then three or four days' journey—from the Crimea, but importantly outside the malaria zone in which Scutari was located. Parkes remained on-site until the end of the war in 1856.

After William Eassie Snr had seen the awful state of construction of the previously shipped British Army huts at Balaklava, he sent his son to supervise the construction of the hospital. The whole kit of parts had reached the site by May 1856, and by July was ready to admit its first 300 patients. Although hostilities had ceased in April, by December it had reached its capacity of 1,000 beds, scheduled to expand to 2,200.

Management and operations
Renkioi was designated a civilian hospital, under the War Office but independent of the Army Medical Department, and hence outside the management of Florence Nightingale. It had a nursing staff selected by Parkes and Sir James Clark, including as a volunteer Parkes's sister; while other staff included Dr John Kirk, later of Zanzibar fame.

Run as a model hospital, it "demonstrated the best practices of the age". This was in contrast to the Army medical facilities, which between them had two clinical thermometers and one ophthalmoscope. Also, despite the Royal Navy's success in preventing scurvy through the provision of concentrated fruit juice, the army failed to learn the same lesson, and so its Crimean soldiers suffered from scurvy.

Renkioi Hospital however had a short life. It received its first casualties in October 1855, after the fall of Sevastopol, was closed in July 1856, and was sold to the Ottoman Empire in September 1856.

But even for such short used institutions, it was feted as a great success. Sources state that of the approximately 1,300 patients treated in the hospital, there were only 50 deaths. In the Scutari hospital, deaths were said to be as many as 10 times this number. Nightingale referred to them as "those magnificent huts".

Present
Today almost nothing survives from it, although regular tourist trips do take in the site.

The practice of building hospitals from prefabricated modules survives today, with hospitals such as the Bristol Royal Infirmary being created in this manner.

Notes

References

External links
The Brunel Museum: Pioneer of Prefabrication – Brunel's Hospital at Renkioi
Plans of the Renkioi Hospital @ Wellcome Trust

British military hospitals
Prefabricated buildings
Hospital buildings completed in 1856
Hospitals in Çanakkale
Crimean War
Isambard Kingdom Brunel buildings and structures
1856 establishments in the Ottoman Empire
19th-century architecture in Turkey

redpajama_set_name: RedPajamaWikipedia


text:
Галікоті () — село в Ірані, у дегестані Паїн-Хіябан-е Літкух, у Центральному бахші, шагрестані Амоль остану Мазендеран. За даними перепису 2006 року, його населення становило 676 осіб, що проживали у складі 168 сімей.

Клімат
Середня річна температура становить 17,18 °C, середня максимальна – 31,42 °C, а середня мінімальна – 4,38 °C. Середня річна кількість опадів – 905 мм.

Примітки

Населені пункти шагрестану Амоль


The mission of having a home is part of the American dream. The VA mortgage guarantee has been helping members of our armed forces for generations. We can help you qualify for this venerable opportunity. Offered exclusively to military veterans and their spouses*, a VA Home Loan will significantly lower the costs of buying a home. If you are eligible, we can help you take advantage of these meaningful benefits.
A VA Home Loan Mortgage is one of the few types of loans which doesn't always require down payment.
This oppurtunity is great for those who are new to the homebuying experience. Don't feel boggled by the process, we'll keep it simple.
With low interest rates and no need for mortgage insurance, your monthly payments can be lower than the average conventional loan.
We know a ton about Refinancing with the VA Home Loan. We'd like to give you more information on the topic.
We often host events. Ask us for more information.
Read About Us and Post a Review!
What do I need to bring for Pre-approval?
How long does a VA loan take to close?
Do I need good credit for a VA Loan?


The Korea Foundation said today that they had issued the 100th edition of its quarterly magazine about Korean culture and arts.
The autumn issue became the 100th edition for "Koreana," which has introduced diverse features on Korean culture and arts to global leaders since 1987, according to its publisher Korea Foundation, an independent organization affiliated with Seoul's Foreign Ministry.
The quarterly magazine is available in nine languages including English, Chinese, Japanese, French and Spanish, to be distributed to more than 10,000 institutions and colleges in 154 countries, according to the foundation.
"Koreana has proudly served as a window through which our readers can have a glimpse into the essence of Korea," foundation chief Kim Woo-sang said.
"We look forward to further satisfying the interests of our valued readers with the publication of another 100 editions over the next 25 years."


text:
Q: Performance issues with Kendo Grid (HTML5) Scenario: I am using Kendo grid (HTML5). To populate the grid client first makes a call to server to fetch the data, once it receives the data then it do some processing on client & then fills the grid.
I am facing severe performance issues with the grid. Grid is only having around 3000 records. But as soon as it populates the data into the grid the browser memory shoots up by more than 400 MB. I want to find out why memory consumption increases so much? Grid has only 5 columns. I have following questions.

*

*How can I find out where it is consuming memory? I tried using google chrome in built profiling tool but I could not find any easy way which can clearly show me who is consuming the memory. Is there any better tool to find out this? I am looking for a tool like Red Gate profile .Net profiler.

*I want to find out why does it takes so much time to render the data. Is there any tool which can tell me which function/line is time consuming?

Atul Sureka

A: Loading 3000 records is the problem. In my experience, you shouldn't load more than 1000 records at a time, but mileage varies because there are many factors that affect network performance and rendering speed.
To solve your problem, you should configure paging on the client and the server. This is a common issue and a common solution. On your Kendo UI Datasource object, simply set serverPaging: true and the number of items per page pageSize: 1000.
var ds = new kendo.data.DataSource({
  // other implementation details left out for brevity
  serverPaging: true,
  pageSize: 1000
});

Once you do this, the data source will send additional parameters to your server on a request. You must be prepared to handle these parameters. It will send top, which refers to the number of records to send back in the response, and skip, which indicates the number of records to skip from the start of the dataset. For instance, if you wanted page 3 of a 3000 record dataset at 1000 records per page, the grid would send skip: 2000, top: 1000.
I don't know what your implementation server-side is, but it's rather trivial to do. Note that you must return your data from the server wrapped in an object with two keys, data and total. This is by convention in Kendo UI. Data is obviously the array of records, and total is the number of records in the array. You can change these defaults within the data source's schema, if needed.
Additionally, on the client, you need to tell the grid to expect paging. You can customize the way paging looks by modifying underlying parameters.
var grid = $('#grid').kendoGrid({
  // other implementation details left out for brevity
  datasource: ds,
  pageable: {
    numeric: false,
    refresh: true
  }
});

redpajama_set_name: RedPajamaStackExchange


text:
Louis Fursy Henri Compère (16 January 1768 – 27 March 1833) was a French general of artillery in the French Revolutionary Wars and the Napoleonic Wars.

Compère was born in Péronne, Somme.  In 1794, he was promoted to chef de brigade, the equivalent of colonel. On 1 May 1794, he was promoted to general of brigade. He was part of the Army of the Danube crossing into the southwest German states in 1799, and participated in the Battle of Ostrach and the Battle of Stockach.
He was the brother of the General Claude Antoine Compère (1774–1812).

Career
He fought at the Battle of Verona on 18 October 1805 where his brigade of Gaspard Amédée Gardanne's division supported the initial attack of André Masséna's converged voltiguers. Later his soldiers formed squares to drive off a counterattack by Austrian hussars. He also led his troops at the Battle of Caldiero on 29 to 31 October in the same year. He commanded one of Jean Reynier's brigades at the Battle of Maida on 4 July 1806. He personally led the 1st Light Infantry Regiment in an attack against the British. Hit by a bullet, he continued to urge his troops forward. Showing incredible bravery, he rode literally among the enemy infantry where he was finally captured. He was promoted to general of division on 1 March 1807. Napoleon awarded him the Commander's Cross of the Legion of Honor.

Notes

References
 Schneid, Frederick C. Napoleon's Italian Campaigns: 1805-1815. Westport, Conn.: Praeger Publishers, 2002.
 Smith, Digby. The Napoleonic Wars Data Book. London: Greenhill Books, 1998.

1786 births
1833 deaths
People from Somme (department)
Generals of the First French Empire
French Republican military leaders of the French Revolutionary Wars


Psychopathology is prevalent in childhood and is a predictor of future problems. Pediatricians are the gatekeepers for childhood mental health, and the rate at which psychosocial problems are detected and treated within pediatric primary care has not been effectively identified in the extant literature, but appears to be low compared to the rate of parental and professional concerns around psychosocial problems. A major problem in the literature on discussion of psychosocial concerns in pediatric care lies in the methodology used. Although the studies mentioned above reflect a tendency for low disclosure of psychosocial concerns, many studies used disparate ways of operationalizing psychosocial concerns and obtaining data on disclosure of psychosocial concerns. Studies have also gathered information from various forms of pediatric practices (e.g., integrated, non-integrated, sites that received specialty training in eliciting and detecting psychosocial concerns).
The use of the integrated care model is one way in which psychosocial concerns may be elicited and treated. However, it is unknown whether parents are socialized for full participation in integrated care medical visits.
To date, there are no published studies that have attempted to determine parents' role expectations within the context of pediatric primary care. Further, many patients have not experienced the services offered by integrated care practices. Because integrated care models acknowledge the importance of the biopsychosocial model, it is expected that discussion of psychosocial concerns will be a part of visits so that medical staff may more fully address patients' problems and concerns.
If role expectations are uncertain in a novel situation, and if this uncertainty leads to lowered self-disclosure (Aronson & Overall, 1966; Lorion, 1974), then the role expectations of those entering integrated care must be determined. If it is found that parents do not expect to discuss psychosocial concerns with their pediatricians, this information could be used to tailor role induction interventions to reduce this uncertainty.
The primary aim of this study is to determine parents' role expectations within the context of pediatric primary care. Additionally, it will be determined if role expectations are significant predictors of the expectation of discussing psychosocial concerns within the context of pediatric primary care. If this is the case, role theory may be important for establishing a theoretical framework to the literature on parental disclosure of psychosocial concerns within the context of pediatric primary care.


text:
SPORTS & OUTDOORS, Sports Headlines
CIF Pushes High School Sports to December, January Starts
By Zach Cavanagh
For the first time since its mid-March shutdown due to coronavirus, high school sports received official direction on its return to competitive play.
The CIF State and CIF-Southern Section offices announced their revised 2020-21 calendars on Monday, July 20, which set the new beginning of the high school sports year in late December 2020, football games starting in January 2021, the combination of the winter and spring seasons and a spring timeline that stretches until the end of June 2021.
CIF-SS will hold a press conference at 1 p.m. on Monday on this revised calendar that can be viewed live on YouTube.
The CIF-SS calendar will be officially voted on as an Emergency Action Item at the section's next scheduled CIF-Southern Section Executive Committee meeting on Aug. 13.
Football, the section's big-money sport, will return to practices on Dec. 14 with the season opening in Week 1 on Jan. 8, 2021. The football season will not be shortened and will run its full 64-day length regular season to Week 10 on March 12.
CIF-SS standardized the length of its seasons to 72 days to try and eliminate as much overlap as possible. In sports like football (64 days) and girls volleyball (57 days) with less than 72 days, the season length remains unchanged. Sports with longer seasons like soccer (83 days) and basketball (81 days).
CIF-SS football playoffs open on March 19 with the CIF-SS championships on April 9-10. CIF State has eliminated the regional rounds for this season and will play the state championships on April 16-17.
CIF-SS commissioner Rob Wigod said the calendar includes "full section championship experiences" with no changes to the number of playoff divisions or guaranteed playoff entries.
Full schedule details for all fall sports for CIF-SS 2020-21 season. @SCHSTritons @dhhs_athletics @sjhhsathletics @JSerraAthletics @SMESAthletics @cvcs pic.twitter.com/pHYl3MdXVI
— SouthOCsports (@SouthOCsports) July 20, 2020
Boys volleyball shifts from the spring to the fall season and will be the first sport to return to games on Dec. 12. Boys volleyball will run concurrently and share gym space with girls volleyball, which begins games on Dec. 19.
Girls water polo has also shifted from the winter season to the fall season to play alongside boys water polo. Boys water polo opens games on Dec. 21 with the girls following on Dec. 28. Like volleyball in the gym, the water polo teams will share space in the pool, and in some instances, both sports share coaching staffs.
Cross country will open on Dec. 26 with the CIF-SS championships on March 20, 2021 and CIF state on March 27. These dates incur the roughest overlap of seasons for athletes and coaches, as the track and field seasons open on March 20. The section's best distance runners could be in full competition mode from Dec. 26 to the CIF-SS championships on June 12 and CIF State championships on June 26.
Spring/Winter sports in CIF-SS begin in Feb./March 2021 with tennis opening 2/22, soccer 2/27, basketball and lacrosse 3/12, baseball and softball 3/19, track and field 3/20.@SCHSTritons @dhhs_athletics @sjhhsathletics @SMESAthletics @JSerraAthletics @cvcs pic.twitter.com/Q7gupY62sy
Field space will be at a premium in the spring with boys and girls soccer opening on Feb. 27 and playing through the CIF-SS finals on May 29 and boys and girls lacrosse opening on March 12 through the CIF-SS finals on June 12. Both starts are just ahead of track and field's March 20 start.
Girls tennis shifts from the fall and will be the first sport to open the spring season on Feb. 22, with boys tennis following on March 1. Tennis opens another potential issue of sharing court space and coaching staffs. As does boys and girls golf, which with girls golf shifting from fall to spring, will run concurrently starting March 20.
Wrestling will begin on March 5, and boys and girls basketball will begin on March 12 – more than a full calendar year after most teams final games of last season.
Baseball and softball open their seasons on March 19 with the first ever CIF State regionals in those sports being played on June 26, the last day of 2020-21 competition.
Swimming opens on March 13, and competitive sport cheer is the last CIF-SS sports to open on March 27.
In addition to and due to the calendar changes, the CIF State office also decided to temporarily suspend Bylaws 600-605, which will now allow student-athletes to participate on outside teams, like club and travel teams, at the same time as they play for their school teams. Local schools, districts, leagues and sections can make their own rule regarding this, but the CIF-SS looks to be following with the CIF State guidance.
Zach Cavanagh
Zach Cavanagh is the sports editor for Picket Fence Media. Zach is a multiple California Journalism Award winner and has covered sports in Orange County since 2013. Follow him on Twitter and Instagram @ZachCav and follow our sports coverage on Twitter @SouthOCSports. Email at zcavanagh@picketfencemedia.com.
BaseballBasketballCaliforniaCIFCIF StateCIF-SScoronaviruscovid-19dana hillsDana PointDHHSDolphin FootballDolphinsfootballOrange CountyreopeningReturnReturn to PlayShutdownSoccersports
Previous Post Grom of the Week: Nathan Hoffman
Next Post Salons Permitted to Reopen with Outdoor Services
Staying the Course: State Provides No Update on Return-to-Play Start Date

redpajama_set_name: RedPajamaCommonCrawl


The module examines drama's claim to be a learning medium; styles of teaching and learning; drama as a cross-curricular method; planning and delivering a drama curriculum. The module evaluates a number of perspectives on the curriculum and how it should serve the needs of young people; these perspectives include post-colonial and post-modern theories of the curriculum. There is also consideration of curriculum planning, progression and assessment in drama.


text:
Copyright © 2013 Immaculate Heart of Mary Catholic Church
Masses and Confessions
Week Day Masses/Misas Diarias:
7:00 A.M. Monday through Friday in English 8:30 A.M. Monday, Wednesday and Friday - (in English) 8:30 A.M. Tuesday and Thursday en Español 5:00 P.M. Tuesday Traditional Roman Rite (Latin) 7:00 P.M. Tuesday en Español
Saturday and Sunday Masses / Misas de sábado y domingo:
Saturday Morning 8:00 A.M. English (Bilingual) Saturday Evening (Anticipated or Vigil Mass) 5:00 P.M. English Saturday Evening (Anticipated or Vigil Mass) 6:30 P.M. Español Sunday Morning 7:30 A.M. English Sunday Morning 9:00 A.M. English Sunday Morning 10:45: A.M. Español Sunday Afternoon 12:30 P.M. English Sunday Afternoon 2:00 P.M. Español Sunday Evening 5:00 P.M. Traditional Roman Rite (Latin)
First Friday Masses / Misas del primer viernes:
Our Mass times, for First Friday Novenas, are the same as a regular weekday Mass. 7:00 AM and 8:30 AM
Confessions / Confesiones:
Please note the times and days for confession. Tenga en cuenta que los tiempos y los días de confesión favor.
Please see the bulletin board for up-to-date confession schedule.
Normally:
Tuesday/Martes: 6:00pm (English-Fr. Quang & Fr. Eric Spanish-Fr. Arturo when available), Saturday/Sábado: 3:30-4:30pm (All Priests) Sunday/Domingo: 4:30pm
1. Please note that Fr. Quang, Fr. Eric, & Fr. Arturo are not always available mid-week for confessions. 2. Any variances, will also be noted in the bulletin.
Immaculate Heart of Mary Catholic Church 500 Fairview Avenue Brentwood, CA 94513 (925) 634-4154
Ministerial/Clergy
Parish Committees
Holy Masses
Ministers' Schedules
Common Daily Prayers
Prayers our Children Should Know
Lenten Observance
Difficulty with Prayer
Ongoing Devotions
Chaplet of the Divine Mercy
Novena to Our Mother of Perpetual Help
24-Hour Devotion
First Saturday Devotion
Copyright © Immaculate Heart of Mary Catholic Church
Masses and
Saturday and Sunday Masses / Misas de
sábado y domingo:
First Friday Masses / Misas del primer
Please see the bulletin board for up-to-date
confession schedule.
Ministries & Faith Formation
Liturgy & Services
Ministers' Schedule
Diificulty with Prayers
Perpetual Help Novena


Wood pellet mill also can press fertilizer pellets through change the flat die compressiong rate,organic fertilizer pellets machine,compost pellet machine.pellet diameter from 3mm-5mm.
1)longer lifetime,each spare parts make hest treatments keep sure the hardness.
tell us,we will change for you.
3)About training: we have many maunal together with the machine packing,if you need learn more,we will show you the machine working videos,if you have free eough time,please come to visit our factory,we will show you how to work and how to maintenance about the wood pellet mill.
4)Our factory near by Jinan International airport,shanDong province,China,welcome to your visiting!
easy to operate, high yield, good shape, the cut potato chips French fries surface smooth, uniform thickness and thickness can be adjusted freely. The new energy-saving frying machine has electric heating, coal heating and other forms. Small animal feed pellet mill/snake feed pellet machine uses imported high-quality stainless steel materials, exquisite workmanship, sturdiness and durability.


Stand-Up And Mobile Presentation Lecterns and Podiums Are Used In Classrooms, Lecture Halls, Auditoriums, Conference Rooms And Presentations.
Stand-Up And Mobile Presentation Lecterns are made of black anodized aluminum, thermal fused melamine laminate or furniture grade particleboard for long lasting durability and dependability. Mobile design includes adjustable shelf in lower compartment for additional storage space. Raised, angled reading surface platform allows for ease of literature viewing. Swivel casters provide mobility. Meets ANSI/BIFMA standards. Stand-Up Lectern with stain-resistant laminate finish assembles easily. Slanted reading surface features pencil groove and paper stop. Includes height-adjustable storage shelf and floor glides. Aluminum Truss Lectern includes a cup holder for water glass or bottle. Extra quantities available. Types are Aluminum Truss Lectern, Mobile Lectern and Stand-Up Lectern. Dimensions vary per type. Color finishes are Aluminum, Cherry, Mahogany, Medium Oak and Satin Red Mahogany. Quantity is 1.
Hard Wood Podiums And Lecterns Provide Style And Easy Access To Presentation Materials.
Hard Wood Podiums And Lecterns are constructed from the finest hardwoods and other high quality materials for long lasting durability. Non-sound with slanted top surface includes paper stop to place notes and pencils at convenient reading angle. Available from popular brands in a variety of sizes and styles to meet presentation needs. Available in a variety of styles, types and dimensions. Dimensions vary per style. Color finishes are Cherry, Mahogany, Maple, Natural Oak, Walnut. Quantity is 1.
Acrylic Lecterns And Podiums Provide Style And Easy Access To Presentation Materials.
Acrylic Lecterns And Podiums are constructed with break and impact resistant acrylic, wood, aluminum and other high quality materials for long lasting durability. Slanted top surface includes paper stop to place notes and pencils at convenient reading angle. Wide base provides stability. Available styles include Curved, Podium, H-Style w/Shelf, Floor, V-Style w/shelf, Deluxe, Large Top, Traditional, X Acrylic and more.. Dimensions vary per style. Color finishes are Cherry, Clear, Clear/Aluminum, Clear/Cherry, Clear/Medium Oak and Clear/Walnut. Quantity is 1. Note: Some models can be custom etched or include vinyl logos available at additional cost.
Multi Purpose Lecterns and Podiums Are Designed For Classrooms, Conference Rooms, Assemblies, Lecture Halls And More.
Multi Purpose Lecterns are made of scratch and stain resistant laminate, powder coated steel or furniture grade particleboard for long lasting durability and dependability. Some models require assembly. Available styles include Stationary, Mobile, and With or Without Sound Connections. Color finishes are Black, Cherry, Gray, Mahogany, Medium Oak, Natural Oak, and Walnut. Dimensions vary per model.
Audio Visual Presentation Carts Are Used For Schools, Conference Rooms And Other Public Speaking Venues.
Audio Visual Presentation Lecterns and Podiums are constructed with a variety of high quality materials for long lasting durability and dependability. All-in-one units provide organized storage for audio/visual equipment. Available in a variety of sizes and styles and from popular brands. Casters provide easy mobility. Shelf space varies per model. Available in a variety of types, styles, dimensions and from popular brands. Color finishes are Black, Black/Ivory, Cherry, Gray, Oak, . Quantity is 1.
Portable Height Adjustable Presentation Lecterns and Podiums Can Be Raised Or Lowered To Suit Every Speaker.
Portable Height Adjustable Presentation Lecterns are constructed with wood, steel and other high quality materials for strength and long lasting durability. Provides generous angled reading table surface with paper stop. Available in a variety of adjustable sizes and styles to meet presentation needs. Styles are Xpediter Adjustable Lectern Stand, Adjustable Speaker Stand, Portable Presentation Lectern, Impromptu® Lectern and Presentation Lectern. Dimensions vary per model. Color finishes are Black, Cherry, Gray, Mahogany, Medium Oak and Walnut. Quantity is 1. 2 Year Limited Warranty.
Amplivox® - Contemporary Color Panel Lecterns and Podiums Offer Contemporary Solutions To Presentation Requirements.
Amplivox® - Contemporary Color Panel Lecterns are constructed with high-density polyethylene, wood, laminate, Formica, aluminum, acrylic and other high quality materials for long lasting durability. Provides modern style to match a variety of dᅢᄅcors. Spacious reading shelf allows room for notes and speaker. Available in a variety of sizes and styles to meet presentation needs. Styles are Contemporary Curved Lectern, Contemporary Color Panel Lectern and Presentation Lectern. Dimensions vary per style. Color finishes are Bianco Marble, Black, Dark Gray, Gray, Gray Granite, Hardrock Maple, Jewel Mahogany, Pyrenees Marble, Red Oak and Sippling Seattle Java.
Table Top Lecterns And Lectern Bases Stand Alone Or Combine To Create A Full Presentation Stand.
Table Top Lecterns And Lectern Bases are made of stain and scratch resistant thermofused melamine laminate on an MDF core for strength and long lasting durability. Provides slanted reading surface with book stop. Available in a variety of sizes and styles to meet presentation needs. Lectern available individually or with base. Styles are Base, Lectern Base/Media Cart, Tabletop, Non-Sound Tabletop Lectern, Non-Sound Travel-Lite Folding Tabletop Lectern and Tabletop Lectern. Dimensions vary per model. Color finishes are Cherry, Mahogany, Maple, Medium Oak and Walnut. Quantity is 1.


Purchased from a garage sale in 1984. This one is tried and true. It was from an old newspaper, but the recipe was cut out without the newspaper name, date or information included so I have no idea where it came from. I make this recipe at least once a month, goes great with chicken dishes.
Place the sausage and onion in a heavy saucepan and sauté until light brown.
Add the water and bring to boil.
Add beans, cumin seed, and hot pepper and bring back to the boil.
Cover, reduce heat and simmer 20 minutes.
This page was last edited on 14 July 2012, at 07:54.


Gislingham Village fate. We have the honor of manning a honey stand 10:00~16:00. If you would like to help out please let the committee know. Helpers can bring 10 jars of honey to put on the stand.
Haughley Village fate. We again have been invited to attend. 12:00~16:00. If you would like to help out please let the committee know. Helpers can bring 10 jars of honey to put on the stand.
The Suffolk Show 2019, Wednesday 29th & Thursday 30th May 2019. Help needed to man the Beekeeping tent.


text:
Q: Convert change number to change id Is there a gerrit REST API to convert change number to change ID
Eg: https://android-review.googlesource.com/#/c/23823/
Convert 23823 to I4f39e8d8cc22520cd36f83f8675a716cc1ade1d9
Thanks.

A: Use the "change" endpoint to search for the change number. Ex:
curl -s --request GET --user user https://gerrit-server/a/changes/?q=change:32151

)]}'
[
  {
    "id": "code~master~I64f1c892c13a9bad903955678f104c34f36d1079",
    "project": "code",
    "branch": "master",
    "hashtags": [],
    "change_id": "I64f1c892c13a9bad903955678f104c34f36d1079",
    "subject": "This is an example",
    "status": "MERGED",
    "created": "2016-11-03 19:15:36.000000000",
    "updated": "2016-11-03 23:02:53.475000000",
    "submittable": false,
    "insertions": 80,
    "deletions": 29,
    "_number": 32151,
    "owner": {
      "_account_id": 3
    }
  }
]

And then get the "change_id" information. Ex:
curl -s --request GET --user user https://gerrit-server/a/changes/?q=change:32151 | sed 1d | jq --raw-output ".[] | .change_id"

I64f1c892c13a9bad903955678f104c34f36d1079

More info here.

A: Alternatively to the answer from Marcelo Ávila de Oliveira, you can use the ssh api (by default on port 29418) which provides a complex description of the change in multiple single-line JSON strings.
The first entry is the one you need, so you could process it with shell utils or as already described with a JSON parser:
ssh -o ForwardX11=no -p 29418 gerrit-server gerrit query --current-patch-set --format=JSON 23823 | head -1 | jq --raw-output ".id"

I64f1c892c13a9bad903955678f104c34f36d1079

If you need the reverse direction, you can feed in a long Change-Id to the same API and get multiple lines for all matched changes with the same Change-Id.

A: I provide my method that how I use pygerrit2 with Gerrit REST API to convert Change number to Change-Id.
Here is my python code.
import sys
from pygerrit2 import GerritRestAPI, HTTPBasicAuth

auth = HTTPBasicAuth(username, password)
rest = GerritRestAPI(url='http://review.xxxxxx.com:8080', auth=auth)

change_num = "1234"
info = rest.get("/changes/?q=change:{}".format(change_num))
change_id = info[0]['change_id']
print(change_id)


A couple of years ago, I made the bold decision to get rid of my ageing Nikon D70 digital SLR in favour of something more portable, and I ended up with an Olympus PEN E-PL5 micro four-thirds mirrorless camera.
It took beautiful pictures, but I there were a couple of things about it that I didn't really like. The flash was a clip-on accessory, which was inconvenient to use, and there was no viewfinder which made using it in bright sunshine almost impossible.
I contemplated buying the electronic viewfinder accessory for the camera, but that cost a cool £120. That got me thinking – if I'm prepared to pay £120 on an add-on, what if I upgraded instead? I had seen Olympus's new OM-D range, and their entry-level model, the E-M10 not only had a built-in flash and electronic viewfinder, but it also had a very nifty power zoom pancake lens – essentially the same focal lengths as my current camera in a lens half the size.
This entry was posted in Lifestyle, Photography and tagged camera, E-M10, micro four-thirds, olympus, OM-D. Bookmark the permalink.


text:
Man steals his mother's car, ends up remanded to prison
Boat reported stolen in Placencia
Where to get vaccinated against COVID-19 in Belize District today
Published by BBNTEAM at November 30, 2021
Posted: Tuesday, November 30, 2021. 8:59 am CST.
By Rubén Morales Iglesias: The Central Health Region in the Ministry of Health said its COVID-19 vaccination drive is continuing today, Tuesday, November 30, at nine sites in the Belize District.
Vaccinations are being administered, at the Central Health Region, Matron Roberts Polyclinic, the Swift Hall, and the Port Loyola Health Center in Belize City, from 8:00 am to 3:00 pm.
The Central Health Region is located behind the old Bliss Nursing Center in the Karl Heusner Memorial Hospital compound (access between Social Security Board and the Karl Heusner Memorial Hospital off Princess Margret Drive or next to Social Security on St Joseph St).
Vaccinations are also being administered at My Cielo Blue Elderly Home in Gardenia from 9:00 am to 12:00 pm.
In Ladyville, vaccinations are being done at the Ladyville Health Center from 8:00 am to 3:00 pm and at the Breadfruit Gardens from 9:00 am to 12:00 pm.
In San Pedro, vaccinations are being administered at the San Pedro Lions Den from 1:30 pm to 3 pm.
In Caye Caulker, vaccinations will be done at the Caye Caulker Health Center from 8:00 am to 3:00 pm.
The Ministry of Health and Wellness advises Belizeans 12 years and up to get vaccinated against COVID-19 at any of its vaccination sites countrywide.


text:
Q: How to convert an mp4 video by 180 degrees using ffmpeg or mencoder After reading about how to convert a video by 90 degrees
I tried these commands:
mencoder old.mp4 -oac lavc -ovc x264 vcodec=mpeg4 -vf flip,mirror -o new.mp4

mencoder old.mp4 -oac lavc -ovc x264 vcodec=mpeg4 -vf rotate=2 -o new.mp4

ffmpeg -i old.mp4 -vf "hflip" -strict -2 new.mp4

but the converted video is still upside down.
Running the video with
mplayer -vf flip,mirror  old.mp4

renders it as desired. But anyway, I'd like to convert it.
I'm using
ffmpeg version 2.8.15-0ubuntu0.16.04.1 and
MEncoder 1.2.1 (Debian), built with gcc-5.3.1

A: Videos from phones often have metadata that tell the player to rotate upon playback (not all players respect this). When re-encoding, ffmpeg will automatically rotate the video according to the rotate metadata, so you don't have to do anything special:
ffmpeg -i input.mp4 -c:a copy output.mp4

However, if the rotate metadata is wrong you can simply remove or change it without needing to re-encode:
ffmpeg -i input.mp4 -c copy -metadata:s:v rotate="" output.mp4

Alternatively, you could change it such as -metadata:s:v rotate="180".

A: I found the following command line code worked with Ubuntu 20.04LTS using ffmpeg:
ffmpeg -i filename.mp4 \
-c copy -metadata:s:v:0 rotate=0 \
output.mp4

It only changes the metadata with no loss in quality.


text:
Don't be afraid to change to grow your business
Tuesday, June 26, 2018 3:32pm
BusinessOpinion
MARYSVILLE – I've always wanted to run my own business. But I've never had the guts, or the money, to take the risk.
I have all the respect in the world for people who do. But I also know that many businesses fail.
Andrew Ballard of Marketing Solutions gave a talk recently on how to avoid that pitfall. While everyone who starts a business has to overcome fear to do that, Ballard said fear is one of the things that can keep those businesses from succeeding.
He spoke at the second Marysville-Tulalip Chamber of Commerce luncheon. He is the author of the book, "Your Opinion Doesn't Matter, It's Your Customer's."
"Don't shoot from the hip and guess," he said.
Change is hard and many businesses don't do enough researching before they start, and they don't change quick enough to last.
He said those who make it and those who don't have one main difference – those who make it realize it often takes failure to achieve success.
Ballard said it takes three things to help a business grow.
•Vision – What is your preferred outcome? Brainstorm. Where do you want to end up?
•Insight – Gather information. Without data you easily can go off task. What are your strengths and weaknesses? Where are you and where do you want to end up? What do your customers say they want? How can you be better the your competition?
•Innovation – What's going to make you extra special so it will be a better experience for customers? What can set your apart? He mentioned the I-phone, invented in 2007, but in 11 years there have been 45 updates. How can you be unique?
Ballard said that process can help people in many things in life – not just a corporate model.
As a case study, he mentioned many years ago he was named the CEO of the March of Dimes, which was struggling in donations. He then was introduced to Baby Rose, who weighed only 1 1/4 pounds when delivered at 22 weeks old. When she grabbed his pinky, "that experience changed my life." The "fragility of her clinging to life humanized our vision." They changed their model as a result and had success. While Baby Rose was the inspiration, the team made it happen.
Certainly if I was going to open a business, I would do as much research as I could. I would find something that has low risk and high reward. So being my own boss in the newspaper business is out of the question. But when I retire I might look into a running a daycare for seniors. It's low-risk and high reward personally and financially. And we need more of them. They can save families so much money, and they give your loved ones a great change during the day.
Steve Powell is the managing editor of The Marysville Globe and The Arlington Times. His Backseat Coach column runs as the need arises.
Going to market
Tulalip chairwoman shares State of the Tribes address


The bat activity survey season may be finished for the year, but the team at Scarborough Nixon Associates Ltd will be carrying out hibernation surveys for bats throughout December, January and February.
Sites to be surveyed include Tattershall Carrs, a Woodland Trust site, recently seen on BBC Countryfile! Over the last couple of years, Ian Nixon has led a project to transform some of the Stanton shelters and remaining wartime structures within the woodland to provide winter roosting features for bats. The features include bat boxes and the specially designed Lincolnshire Bat Brick. These features have now been in place for 18 months, and hibernation surveys in winter 2015/2016 showed that the structures were being used by small numbers of bats, including brown long-eared and Natterer's. This winter, further hibernation surveys will take place to monitor the population of hibernating bats within the woodland, and all data will be submitted to Bat Conservation Trust as part of the National Bat Monitoring Programme.


text:
Join the Hub Search For Clinical Trials Donate
DMD Hub Sites
What is a Clinical Trial Like?
Georgina describes hers and her son's experience
Georgina: "We've made some amazing friends in the nurses, doctors, parents and patients with Duchenne"
Connor, who's 8 years old, has participated in two clinical trials now.
The first was a 1b trial. It was quite hard going with lots of intrusive tests and overnight stays for two weeks.
The second was a phase 2 trial, so not quite so intense. We had quite a few visits and a few overnight stays in the year he participated.
Connor had two muscle biopsies, which were a little larger than we expected. He was out of hospital the same day. The pain wasn't an issue afterwards for him and they both healed nicely with no trouble.
He has been an absolute trooper in taking part, hardly ever moaned and took everything in his stride.
We had a few difficulties with giving blood but his advice would be no cream or spray, choose the bounciest vein, drink lots of water beforehand and keep the area warm.
He is now on the extension phase of the trial so there are fewer visits now. We go to Great Ormond Street Hospital every six months for the trial and have a home nurse visit occasionally.
All our expenses have been paid for including hotel stays, meals, drinks and tickets, which is excellent and definitely helps financially.
We've made some amazing friends in the nurses, doctors, parents and patients with Duchenne. Connor used to look forward to the popcorn and movie nights with his new friends in the clinical research facility.
We are extremely proud of Connor and the way he has handled it all for the past few years. He also likes the fact he's helping the scientists to find a new medicine to help all the kids out there with poorly muscles. He's our hero!
Without families and the children with Duchenne participating in the clinical trials, we wouldn't be as close as we are now in finding a possible treatment. So our advice would be get enrolling, there's not a lot to lose and lots to gain……let's find the drug that works!
Home Patients DMD Hub Sites Industry
Accessibility Privacy Policy Cookie Policy
Search For Clinical Trials
Website by Red Ant Solutions
We have placed cookies on your computer to help make this website better. For more information please click here
By continuing to use this site or closing this panel, we'll assume you're OK to continue. You can view our full privacy policy here


Numerous primary and secondary roads in the eastern half of New York State are affected by flooding resulting from Tropical Storm Irene. Expect major delays. Parts of the New York State Thruway (Interstates 87 north-south and 90 east-west), plus Interstate 88 are closed. Numerous counties have declared a State of Emergency and unnecessary travel is discouraged. Travelers will not have the ability to access/traverse the most effected areas in and around 100 miles west and south of the Capital District and north of New York City. Major rescue and recovery efforts are on-going. The full extent of damage is being evaluated.
The New York State Police is working closely with its transportation partners to gather and disseminate the most up to date and accurate information. The State Police recommends delaying all travel plans until re-evaluating conditions on Tuesday, August 30, 2011.


text:
Air Politics (Or Is It Just Gas?)
by Source on December 16, 2016 · 3 comments
in Civil Rights, Culture, Economy, Education, Election, Environment, Politics
By Bob Dorn /San Diego Free Press
Noblest Motive is the Public Good (Seal of San Diego County)
Because America fell to a fascist coup d'etat only a few weeks ago it's not too early to talk about how it happened.
First and above all others, the Democratic Party was a necessary player in this debacle. Loyalists will be outraged seeing that in print. After all, they'll say, we need now more than ever to grow more united, to bond again as Democrats because… stronger together.
But that mother-loving phrase failed, didn't it? It was empty of substance, like so many others the Dems put up. No one bought it.
It's almost pathetic to watch the defeated party grope for explanations having to do with the decrepit Electoral College and Republican gerrymandering, the FBI's Comey striking a blow at the last minute, the Russians hacking into party emails and releasing excerpts of conversations that revealed—Gasp!—cynicism equaling that portrayed in any House of Cards episode.
The Democrats lost because they have no central beliefs. Instead, they wandered through a set of undeniably deadly problems—climate change, racism in policing, discrimination against genders, unaffordable education and housing, joblessness, homelessness, crumbling infrastructure and more—a supermarket of evils that, as in a supermarket, offered so much it was difficult for us to know where to start, what to buy into.
Don't get me wrong, the Republicans are behind this reduction of politics to commodity. They own what might be called the means of reduction—the national public relations firms, campaign consultants, financial markets, insurance combines, banks. All these institutions and agencies are owned by Republicans, and they managed through them to change not just our habits, but our language.
It's no accident that economists long ago converted a perfectly appropriate word, "products," to the sunnier, more desirable "goods," nor that the Supreme Court (so-called conservative) took the radical step of endowing giant corporations with the status of "people," providing them the right to argue that they have civil rights.
The Republicans have mastered the art of making their living selling bad deals. They're like medieval alchemists; they can turn a spoiled brat into a president, can turn hunger and want into political commodities.
They seem also to have been able to separate Democrats from their own modern inheritance—a commitment to helping people.
When was the last time any Democratic candidate ran on the principles of preserving the New Deal, or repairing the dismantling of the 1964 Voting Rights Act? The Democrats seem embarrassed by their history.
They don't invoke the name of the man whose Works Progress Administration produced the County Administration Center, arguably the most significant piece of architecture in the county. For the record he was Franklin Delano Roosevelt.
When he dedicated the building on September 16, 1938 he referred to an inscription over its big double doors (now closed to the public) that reads, "The Noblest Motive is the Public Good," (he wasn't talking about that Audi Coupe) and said, "American democracy will live as long as the people keep in their hearts (that) motto."
FDR's brain trust gave the Democrats a lot to crow about. The FCC oversaw radio and later television to ensure ownerships were not monopolized by one or two giants. The FDIC protects depositors from losing their life savings when banks fail. The FHA regulated loans banks offered to people who couldn't afford the commercial rates. It gave us the Social Security Administration, a non-profit investment program that allowed working people to retire in dignity.
Today, we can't hear the acronym FDR from anyone's lips, much less LBJ, that of Lyndon Baines Johnson, who shepherded through a majority Republican Senate and House the Voting Rights Act of 1965 and the earlier Civil Rights Act in 1964. Harry Truman, the 33rd President, put together The Fair Deal, which extended the New Deal's embrace of protection against monopoly and sharp business practice in the early 50s.
The Democrats have been so embarrassed by their history they've gone silent on it. Maybe they've become fearful of seeming like socialists. That probably explains the blacklisting of Bernie Sanders. It probably explains why an elderly white woman at a Trump rally could warn President Obama "to keep his hands off my Social Security," as if the Democrats were the ones trying to undo the New Deal.
So, if the Democratic Party is going to be the vehicle (not that Audi Coupe) for a comeback of justice and fruitful, well-rewarded work it will have to come up with more substantial and more clearly outlined ideas. Slogans, fundraising and the pep rallies that follow are not substitutes for policy.
How 'bout a national party built on some or all of the following?
Repeal Citizens United. And get rid of the SuperPacs which can donate unlimited amounts of money without disclosing who's giving it.
Require candidates for the presidency to make public the past 10 years of their IRS statements before they can be nominated.
Reinstate the Draft, or establish public service as an alternative to it. Killing people should be more on our minds than it is, and the draft is one way to put it in that location, which grows murkier every day. We ought to be able to thank people for their service even if it is the noble act of feeding hungry people.
Guarantee clean water. No more need be said.
Spend as Much on Education as on the Military. A Hawkeye recon plane costs $232 Million, an F22 fighter jet, $350 Million. Think how many talented instructors could be hired to teach if we sold one each of those planes to some jerk with a war museum collection. While we're at it we could eliminate some of the 662 military bases overseas, 38 of them in Germany alone.
Set a Living, not a Minimum, National Wage
Restore Income Taxes to their Levels During the 1950s. The economy of the US and earnings both began to soar after the Eisenhower Administration.
Make Illegal the Private Possession of Assault Rifles. This would provide the side benefit of giving our police and emergency rooms a break, as well.
A Single Payer Health Care System. How many hands must be covered, cash or credit, by the hands reaching for help.
One Person, One Vote. Don't let organizations as corrupt as political parties say who can vote and who cannot. Assign voting districts based on the most compact, least angled borders.
Of course, these are just a start; a lot more could be done. Feel free to make suggestions to us here, and to the Democratic National Committee.
Berthe December 16, 2016 at 2:36 pm
Good column.
I would argue that the DNC relying on "identity politics" just didn't cut it, nor did its evisceration of Bernie Sanders help. There has been absolutely zero apology for the latter, and people do have long memories.
The Dems have happily re-installed Nancy Pellosi as Minority Leader in the House (well, she did have a challenger who got 39 or so votes) and Chuck Schumer (Mr. Wall Street) in the Senate.
James Carvelle, who famously said, "It's the Economy, Stupid" had at least this one statement right. Voters see little difference, in the end, between Tweedledum Corporate Dems and Tweedledee Corporate Rs at this point. Bernie might well have won if he hadn't been throttled, as he did well in the rural areas during the primaries – the same areas that Trump won in the general election. So – here's hoping the Dems do some soul searching, and soon, else they become extinct.
RB December 16, 2016 at 3:18 pm
This is a great list for addressing the issues of Democrats in California and New York.
Unfortunately, this does not address the issues important to the middle class and the middle of the country. The middle class and the middle of the country wants JOBS, JOBS, JOBS, not new welfare programs.
Nancy Pellosi and Chuck Shummer as your leaders? Democrats may get creamed in the Senate races in 2018 with these senior citizen leaders trying to appeal to younger voters.
CliffHanger December 17, 2016 at 6:53 am
Good list.
The inevitable, "I'd add…"
Community based law enforcement
Fair congressional district borders (eliminate gerrymandered lines)
Revised Electoral College
Older Article: Barrio Logan's Marine Terminal Expansion Moves Toward Sustainability
Newer Article: News from Ocean Beach and Point Loma – Mid-December 2016


text:
Healthy reefs ʽĀhihi Kīnaʽu Natural Area Reserve, Maui © Jim Petruzzi
Maui's Most Resilient Reefs Found in State Marine Managed Areas
Sediments, nutrients and fishing pressure are key threats to reefs.
Grady Timmons
Email: gtimmons@tnc.org
Five of Leeward Maui's most resilient reefs are found in State managed areas and offshore of a federal wildlife refuge. That was a key finding from a 2018 survey that offers a snapshot of more than 22,000 coral colonies at 51 sites along Maui's South and West shores. The results suggest that coral reefs can be managed to build resilience and increase survivability in an uncertain climate future.
The State's Molokini and Honolua Marine Life Conservation Districts, Kahekili Herbivore Fisheries Management Area, ʽĀhihi Kīnaʽu Natural Area Reserve, and the reef offshore of the U.S. Fish & Wildlife Refuge at Keālia—a natural wetland that protects coastal resilience—are amongst the healthiest reefs in Leeward Maui.
The survey, conducted by The Nature Conservancy (TNC) with support from the State Division of Aquatic Resources (DAR), the University of Hawaiʽi and National Oceanic Atmospheric Administration (NOAA), sought to identify the sites likely to be the most—and least—resilient to climate change impacts.
The survey also identified the different local pressures affecting those reefs that, if reduced, could enhance reef resilience, defined as a reef's ability to resist or recover from climate change impacts. Results will help inform community-based conservation efforts on Maui and the State's Marine 30x30 Initiative, a commitment to effectively manage 30% of nearshore waters by 2030.
Maui's Leeward reefs face a combination of threats, including sediments, nutrients and high fishing pressure. Sites with high fishing pressure included North Kāʽanapali, Hanakaʽōʽō north of Lāhainā, and Keālia in South Maui. Kīhei and North Kāʽanapali were areas with more pronounced nutrient and water quality issues.
"The threats facing Maui's reefs vary from site to site, so management actions need to be tailored to address those threats. Communities and State agencies can use this information to make decisions about how best to manage our reefs—not just for the conditions of today but for the conditions that are coming," said Dr. Eric Conklin, director of marine science for TNC Hawaiʽi.
Conklin said the state has already started to see the impacts of climate change, such as the 2015 mass bleaching that was caused by unusually high ocean water temperatures and resulted in up to 90% coral mortality on some reefs. "While we are limited in Hawaiʽi in what we can do to alter the global forces driving climate change, the way we address local pressures now will help or hinder the ability of our reefs to respond effectively," he said.
Sediment was one of the major local pressures impacting reef resilience on Maui. One example of this is found at Olowalu, a vitally important reef system that is a major contributor of coral larvae across West Maui.
"We surveyed several Olowalu reefs, and while some were doing very well, others were heavily impacted by sediment," Conklin said. "In general, a number of reefs with low resilience were in areas impacted by land-based sediments and nutrients, including Kīhei and around Lāhainā. Nutrients bind to sediments, so these impacts often occur together."
Brown water events are a common occurrence after major storms in South and West Maui. The problem has become so acute it prompted the formation of the West Maui Ridge 2 Reef Initiative and Hui O Wai Ka Ola, a trained group of citizen scientists assisting the State in monitoring Maui's ocean water quality.
According to Emily Fielding, TNC's Maui director of marine conservation, development and a century of intensive agriculture has left "legacy" sediments on the island. "A lot of sediment is already in the ocean, but a lot remains within the stream banks and gets washed into the ocean during big rain events," she said. "It's a real challenge, particularly in West Maui. Even if you institute the best land management practices to prevent new sediments, there are still tons of sediments already in the delivery channel getting released over time that need to be addressed."
Identifying the most pressing local threats and the most resilient reefs across the state is critical to the Marine 30x30 Initiative. "Key in reaching the 30x30 goal is to create a cohesive, ecologically connected network of marine areas that, managed collectively, will rebuild and sustain productive nearshore fisheries, cultural and social benefits, and coastal and reef resilience," said Acting DAR Administrator, Brian Nielson.
Funding for the Maui reef resilience surveys and Hui O Ka Wai Ola was provided by the NOAA Coral Reef Conservation Program, National Fish and Wildlife Foundation and other private supporters of The Nature Conservancy.


text:
Keep the same dance going
By Norm Farrell on November 16, 2015 • ( 4 Comments )
Psychologist Dr. Mike Webster writes often about relationships between senior management and the men and women delivering police services in our communities. He knows about moral disengagement, which allows virtuous people to commit inhumane acts. Webster's words can help us gain understanding:
It is with irony that both the social/religious reformers and those in power are able to morally justify their behaviour. The authorities… believe they are right in responding unfairly, cruelly or violently as they are representing the greater community, and the reformers believe they are right in using similar tactics as they are attempting to bring about social/religious change.
This is where the old adage "one person's hero is another's villain" can plainly be seen. Moreover, here is the explanation for the failure of moral appeals to bring an end to the violence; both sides are able to justify their own behaviour while vilifying the other's.
Moral justification is an effective tool in disengaging one's morals from one's behaviour. In reconstruing the violent act as having a moral purpose, no matter which party in the conflict uses it, not only do they impede self condemnation but they create self valuation. So whether it is ISIS or the "Commish" each can not only (and does) subvert self criticism for insensitive acts but rather pat themselves on the back for doing a good thing.
…Can you see the human dynamic in it all? Can you see how responding in a "knee jerk" fashion will only keep the same dance going. A new dance is needed to resolve these things. One side is as guilty as the other for keeping it going…
Categories: International, Policing, RCMP
Tagged as: Webster.Dr Mike
Mourn all victims
Alert Bay filmmaker wins San Francisco festival award
The quickest way to end a dance is to turn off the music.
The music in the dance of which Dr. Webster speaks is a harmony of religion and social injustice. It's unrealistic to expect the former to be turned off, but if the latter can be achieved the dance may at least be reduced from a break dance to a slow waltz.
The problem is that the latter involves religion as well. Worship of the dollar.
Worship of the dollar has killed more people that ISIS ever will; add in the other 'lot' and we have the "meaning of life"
The Catholic Pope would seem to realise this and, I would suggest, is trying his best to put humanity before religion.
When I first started reading the post I thought it was going to be about something the BC Lieberals had done,again.
The actions by ISIS in Paris are nasty and some including Brad Wall are giving it the old knee jerk reaction as is the Pres of France. A 90 day impossion of martial law will enable their government to do a lot of damage. Who knows,perhaps they were wAiting for the occasion
scotty on denman says:
One aspect of the hypocrisy Mike Webster cites as the formulator of violence—and ultimately its perpetuator—is usually overlooked, that is, the almost a priori sense of urgency, the immediacy of compulsory offence which rationalizes the contingent abandonment of moral principle; I recall my late father's moral dilemma—or, should I say, the scar on his soul I don't think ever really healed: the "necessity" of the war against Hitler. As a religious Christian, he was taught that killing was a sin—it says so in the Ten Commandments. Although there was no flinching about defeating Nazi Germany, nor any doubt that the weight of righteousness was clearly on the Allies' side in destroying the systematic murderers of innocent civilians, yet I always suspected he carried a kind of nagging guilt in the back of his mind for having to kill to do the right thing, as if his admission through the Pearly Gates might have been forfeited because of the plain breach of Commandment—and as if ethical judgement might be morally incorrect in any case.
Before the Commonwealth's declaration of war, controversy raged about either waiting for Hitler's evil reign to somehow peak, plateau, and maybe even recede back into morally acceptable territory, on the one hand (espoused by British PM Chamberlain), and attacking immediately to prevent evil from spreading interminably. The moral dilemma is distorted today by the retrospective condemnation of the wait-and-see approach, and the subsequently unexamined adoption of the kill-it-before-it-(potentially) grows rationale historians flocked to. The latter can dispense with moral "dithering" altogether—else it's "too late" to stop the perceived evil. In recent times, timing was both hailed and condemned as "the rush to war," and the Bush administration warned of not just a massive arsenal aimed at the USA, but, critically, the immanence of its use; that sense of urgency urged otherwise intelligent people to accept blatant, smirking, and unabashed lying.
Moral supremacism, practiced by all belligerents in every sapiens era, may always churn in the court of public opinion, but often a fabricated sense of urgency—induced panic, in fact—is deployed, more and more, perhaps, now it's revved-up in potency by the high-speed, technological world we've made for and against ourselves.
Native, or kin, supremacism is always with respect to "the other." It seems so strong that sapiens will even fabulate an "other" where none really exists (Serb and Croat propaganda in the 90s actually convinced otherwise genetically indistinguishable people of a fantasy discernibility between neighbours for the purpose of recruiting perpetrators of hatred and violence—each "ethnicity" being taught it was genetically distinct, and, of course, ethically, morally, spiritually, and legally supreme over the other). It's a human characteristic as far as we can tell; yet its handmaiden of urgency is always there with it, a time simple element that lends itself to cogent and memorable narrative as if the 200,000 year-old tradition of warriors boasting around the campfire, denigrating enemies always made of inferior stuff, must integrate a thread of it to hold the story together, perhaps an critical event that thenceforward accompanied the primal narrative inheritance sapiens cultivate, that the other is the other because of an urgent circumstance long ago which continues to distort our moral judgement even today, and even when we're painfully aware of it and can't seem to stop it.
To use a computer analogy: is the solution found by rewiring, or simply by reprogramming?


text:
This Is How Much It Costs to Get Divorced in Every State
Hristina Byrnes
Last Updated: February 17, 2020 9:15 am
Source: benkrut / Getty Images
> Avg. cost of divorce without children: $10,900 (8th lowest)
> Avg. cost of divorce with children: $16,400 (9th lowest)
> Avg. divorce filing fee: $156 – $197
> Cost of living: 10.0% less than the national average
> Median household income: $58,218 (21st lowest)
> Divorced population: 11.2% (23rd lowest)
See all stories featuring: Kansas
Source: benedek / Getty Images
> Avg. cost of divorce without children: $10,200 (2nd lowest)
> Avg. cost of divorce with children: $15,300 (3rd lowest)
> Median household income: $50,247 (7th lowest)
> Divorced population: 12.8% (8th highest)
See all stories featuring: Kentucky
States Where People Marry Old (and Young)
Courthouse. (CC BY 2.0) by ian munroe
> Avg. cost of divorce without children: $12,600 (25th highest)
> Avg. cost of divorce with children: $18,900 (25th lowest)
> Cost of living: 9.9% less than the national average
> Divorced population: 11.3% (25th highest)
Source: kenmo / Getty Images
> Avg. cost of divorce without children: $11,100 (11th lowest)
> Avg. divorce filing fee: $120
> Median household income: $55,602 (16th lowest)
> Divorced population: 14.5% (the highest)
See all stories featuring: Maine
Source: aimintang / Getty Images
> Avg. cost of divorce with children: $21,000 (13th highest)
> Cost of living: 9.4% greater than the national average
> Median household income: $83,242 (the highest)
> Divorced population: 10.2% (12th lowest)
See all stories featuring: Maryland
Sponsored: Tips for Investing
A financial advisor can help you understand the advantages and disadvantages of investment properties. Finding a qualified financial advisor doesn't have to be hard. SmartAsset's free tool matches you with up to three financial advisors who serve your area, and you can interview your advisor matches at no cost to decide which one is right for you. If you're ready to find an advisor who can help you achieve your financial goals, get started now.
Investing in real estate can diversify your portfolio. But expanding your horizons may add additional costs. If you're an investor looking to minimize expenses, consider checking out online brokerages. They often offer low investment fees, helping you maximize your profit.
Read more: Special Report, Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, Louisiana, Maine, Maryland, Massachusetts, Michigan, Minnesota, Mississippi, Missouri, Montana, Nebraska, Nevada, New Hampshire, New Jersey, New Mexico, New York, North Carolina, North Dakota, Ohio, Oklahoma, Oregon, Pennsylvania, Rhode Island, South Carolina, South Dakota, Tennessee, Texas, Utah, Vermont, Virginia, Washington, West Virginia, Wisconsin, Wyoming, People
Most Famous Cowboys of All Time
30 Most Famous Identical Twins of All Time
50 of America's Greatest War Heroes
Most Famous Identical Twins of All Time


Yes!!! I am going to participate on this journey. Here is the link to to find out more in case you would also like to join in on the fun.
I loved and enjoyed making the 12 tags of Christmas in December 2011 I had learned a lot of cool techniques.
I will be posting each tag to keep you up to date.


RZ Barre is an intelligent exercise class, using a combination of movements from Ballet, Gym, Pilates and Yoga that quickly develops your body to be strong, lean and flexible.
The barre is used as a prop to balance, while doing exercises that focus on strength training combined with repetition of small range-of-motion movements.
We incorporate small hand weights and props for an all body workout, shaping and toning along the way. Improve your core and feel yourself get stronger each class.
Our focus is on delivering a quality workout and taking you safely through each movement. We offer modifications and options to intensify the workout which means that the Barre workout is accessible for everyone. You don't have to be a ballet dancer or have rhythm - we help you find your own, get you moving and that is what is important!
Expect a dynamic class that gets your heart rate up, challenges your balance, precision and asks for just one more repetition so you really feel that burn. Finish the class with zen time of gentle stretching and leave feeling clear and energised.
RZ Barre is the foundation of all our Barre Classes...a GREAT place to start!
New to Barre. Book a 1:1 with Jen or attend our Barre Essentials class. We take you through alignment, cues we use, pilates principles & posture...perfect for your first time at the Barre.