text:
Law Mans Very best Attorneys List Aug 02
Buffalo and Rochester New York : Many Buffalo lawyers do not want to take a case to trial, which may be a big commitment of time and effort. At the Law Offices of James Morris, our Buffalo law firm is willing to go the distance for our clients. We understand clients who have been seriously injured in car accidents, workplace accidents, or are coping with a wrongful death claim need a dedicated personal injury attorney. Our attorneys are passionate about getting justice for injury victims and are not afraid to take a case to court. That is why we voted James Morris Law the best accident injury lawyer in Buffalo Ny and the best accident injury lawyer in Rochester Ny
Tulsa, OklahomaJeff Martin Fights for Accident Victims in Tulsa and Throughout Oklahoma: Rely on an Experienced Attorney in Oklahoma.
The Law Offices of Jeff Martin provides aggressive, powerful representation. It's a reputation we have earned in Oklahoma. We fight for the rights of victims and demand the justice they deserve. Opposing counsel and insurance companies know that our personal injury lawyers mean business.Time after time Jeff Martin has won some of the largest and most complex cases that is why we voted him best accident injury lawyer in Tulsa Ok
Tulsa, Oklahoma (All of Oklahoma) Hansen Dirani & Associates best disability lawyer Each SSDI or SSI case is unique. Social Security issues may come up in one case that may not exist in any other case. We know how to handle the tough cases. We put our resources and knowledge to work for clients. Whatever type of medical condition or disability you are facing, you can rely on the tough-minded Social Security disability lawyers at Hansen Dirani & Associates Law Offices.
Philadelphia PA (All of Pennsylvania) Flager Yockey best injury lawyer in Philadelphia Pa Our Philadelphia accident attorneys understand that your injury or loss has a specific impact on you and your family: medical bills, lost wages, property damages. But to the insurance companies, everyone is the same. At Flager & Yockey, a Philadelphia lawyer can invest time and give you personal attention to make your case as strong as possible. Our Bucks County PA lawyers will fight hard to get you everything that your specific accident or injury entitles you to.
Kansas City Castle Law best accident injury lawyer in Kansas City
Trust Your Personal Injury or Bankruptcy Case to the Attorneys at Castle Law
Licensed in Kansas and Missouri, Castle Law Office specializes in both personal injury and bankruptcy law. Our professional attorneys and staff are passionate about assisting you through tough times, and getting you the assistance you need.
Whether you've been injured in an accident or you're considering bankruptcy, the stress of the situation can be overwhelming. Our attorneys and staff want to help you bring closure to these events with creative solutions that take into account all sides of your individual situation.
El Paso Tx (All of Texas) Offices of Michael J. Gopin best injury lawyer in El Paso Tx Experienced personal injury lawyers in El Paso
Our personal injury lawyers in El Paso have more than 20 years of legal experience. We work aggressively to protect the rights of injury victims in El Paso and other communities throughout Texas. By standing up for people's rights, we believe we can make our community stronger. We don't just work here. We live in El Paso and care deeply about the community. In fighting for an accident victim, our goal is to help the injured get the compensation they deserve – and hold the negligent party or parties accountable for their actions.
Maine (All of ME) Joe Bornstein best accident lawyer in Maine Don't leave it up to the insurance companies to decide what's fair. If you or a loved one has been hurt as a result of someone else's negligence or wrongful actions, contact the Law Offices of Joe Bornstein today. Many cases are bound by a statute of limitations, which restricts the time in which a case can be filed.
In over 37 years, the Law Offices of Joe Bornstein has helped more than 18,000 injured and disabled Mainers collect over $200 million in damages and benefits. Contact the Law Offices of Joe Bornstein and get one of our teams of attorneys and case managers working for you today.
Oklahoma City (All of OK)
best injury lawyer in Oklahoma City For more than a decade, the attorneys of the Dan Davis Law Firm in Oklahoma City have worked on behalf of injury victims to see that they get the compensation or benefits they are owed. We respect personal freedom – but that freedom includes being free from unnecessary risk of harm posed by negligence on the part of another citizen, business owner, or governmental agency.
Savannah Ga The Eichholz Law Firm, P.C. best injury lawyer in Savannah Ga Based in Savannah, we provide aggressive representation to people injured throughout Georgia due to the negligence of others. We put our skills and resources to work for victims who need legal assistance in a variety of cases, from personal injury involving nursing home negligence and abuse to those harmed by dangerous drugs and defective products.
Atlanta Ga (All of Georgia) Gary Martin Hays best accident injury lawyer in Georgia
From our Atlanta- and Athens-area offices, we provide determined legal representation for those injured due to the negligence of others, including drunk drivers, to those hurt at work, to those who are sexually assaulted or raped in an apartment or commercial establishment, to residents of nursing homes who are abused or neglected, and many other cases. Call us now for your free consultation: 1-800-898-HAYS.
Fresno, California (All of CA) best injury lawyer in Fresno CA Attorney Robert Gilmore has more than 30 years experience fighting to ensure that injury victims are treated fairly by the insurance companies. If you have been in an accident, don't sign any documents or make any statements until you are fully aware of your legal rights. Call 800-WinWin1 today for a free consultation. Tell them you mean business!
Detroit MI(All of Michigan) best accident injury lawyer in Detroit MI Detroit Michigan Personal Injury, Medical Malpractice & Accident Attorney At Goodman Acker, PC, we will fight hard on your behalf. As part of our commitment to our clients, we always try to respond as quickly and carefully as possible to your legal needs. We temper the speed of our service with the need to be thorough. We don't want just to take care of your legal needs quickly; we want to take care of them correctly. We promise to try to get you the results you need and deserve. This can only be accomplished by having experienced, dedicated legal professionals on your side.
Macon GA best accident lawyer in Macon GA At Langley & Lee, LLC, our Georgia personal injury lawyers are dedicated to providing an outstanding combination of skills and service to people injured in accidents. An accident can happen anytime. Many of us at Langley & Lee have experienced what you are going through. An accident lawyer in Georgia is prepared to fight for the maximum compensation you're entitled to receive under Georgia law.
Worcester MA best accident lawyer in Worcester MA In Massachusetts and throughout New England, the Law Offices of Mark E. Salomone is known for providing aggressive, powerful representation, and opposing counsel know that our personal injury lawyers mean business. With our respected trial attorneys on your side, you can be sure that your rights will be protected with fierce, unrelenting determination.
Boston MA best injury lawyer in Boston MA
It's important to contact the Law Offices of Mark E. Salomone, serving Boston, Worcester, Springfield, and all of Massachusetts, immediately to protect your rights. Our attorneys have earned a reputation for their aggressive courtroom representation and for their numerous financial recoveries on behalf of clients.
Springfield Ma best injury lawyer in Springfield MA Whatever the case, clients can depend on aggressive and determined representation by attorneys committed to helping victims get the highest compensation for their injuries. Opponents know that when they face our personal injury attorneys, they are up against a team of dedicated legal professionals who will not back down when it comes to doing the right thing for their clients.
Charleston Wv best accident injury lawyer in Charleston Wv Marks & Harrison is strictly a personal injury law firm. We don't represent insurance companies. We are passionate about helping people injured by negligence. Our clients have included people injured in West Virginia auto accidents, truck wrecks or tractor-trailer crashes and motorcycle accidents.
We have experience fighting for West Virginians injured in slip-and-fall accidents, also known as premises liability cases. Other areas of practice include dog bites and medical malpractice.
Harrisburg Pa best accident injury lawyer in Harrisburg Pa Contact the Metzger Wickersham Law Firm – Personal Injury Attorneys Who Mean Business
Contact us now for a free initial consult with one of our experienced personal injury lawyers. With more than 120 years of experience, we represent clients throughout Pennsylvania. We have offices in Harrisburg, Shippensburg, Lancaster, York, and Wilkes-Barre. You can rely on our dedicated and focused lawyers. Our lawyers work relentlessly to secure the compensation that you need – and deserve.
Columbia SC best accident injury lawyer in Columbia SC Peake & Fowler Law Firm, P.A. Experienced Personal Injury Lawyers in South Carolina Who Understand! We understand … INJURED VICTIMS! Many of us at Peake & Fowler Law Firm, P.A. have gone through the same things you've gone through. We know being a victim should not be taken lightly. It's no joke. Our personal injury lawyers are here for you and ready to protect your rights when you have been injured by someone else. We don't represent insurance companies or big corporations. We're on the side of South Carolina folks just like you. We work hard every day to help people injured by someone else's wrongdoing or somebody's
Weirton WV best injury lawyer in Weirton WV Honored to Offer Service, Proud to Provide Results.At Recht Law Offices, our experienced attorneys and professional staff consider it our primary obligation to provide fierce representation.If you are entitled to money as a result of harm or loss you've suffered, we will not stop working until you have received it, and you will not pay us one dime until you have been compensated.
If you are involved in another type of legal case, such as a divorce, real estate transaction, or are facing criminal charges, we will stand behind you and provide the knowledgeable guidance you need to resolve the matter.
Spokane Wa best injury lawyer in Spokane Wa Contact McKinney Law Today
With nearly 40 years as a plaintiff's personal injury lawyer, Richard McKinney, senior attorney, knows how to put his experience and resources to work with the goal of maximizing compensation for clients. Contact McKinney Law for a free initial consultation. Call 1-800-WinWin1. The staff at McKinney Law treats clients with dignity and respect while working relentlessly to protect their rights.
Hartford CT best accident lawyer in Hartford Ct The law offices of Mark E. Salomone and Morelli provide aggressive, potent representation in Connecticut and throughout New England. Opposing counsel understand that our personal injury lawyers mean business.
With our distinguished trial attorneys on your side, there is no doubt that your rights will be protected with intense, unwavering determination. And, you do not pay unless we win.
New Haven Ct Mark E. Salomone and Morelli best accident injury lawyer in New Haven Ct If you or a loved one has been involved in a motor vehicle accident in Hartford, New Haven, Middletown or elsewhere in Connecticut, contact the Law Offices of Mark E. Salomone and Morelli. A car and truck accident lawyer with our firm can help you obtain the compensation you need and deserve.
Waterbury Ct Mark E. Salomone and Morelli best injury lawyer in Waterbury Ct The Law Offices of Mark E. Salomone and Morelli is experienced in handling slip and fall liability cases such as:
Negligent care of a sidewalk or publicly owned area, such as a pothole in the ground
Dangerous conditions of a restaurant, supermarket, store or private home, such as torn carpeting, changes in flooring, poor lighting or a wet floor
Unsafe or narrow stairways
Hazardous weather conditions such rain, ice or snow
Safety code violations
Chicago IL best accident lawyer in Chicago IL Slocumb Law Firm: Chicago personal injury attorneys who fight for accident victims
The Chicago personal injury attorneys at Mike Slocumb Law Firm represent clients throughout Illinois. If you have been injured in an accident in Chicago, you need an Illinois attorney who is dedicated to protecting your rights. A personal injury lawyer in Chicago with our law firm can aggressively fight for the compensation you deserve.
Montgomery AL best injury lawyer in Montgomery AL Personal Injury Lawyer in Montgomery, AL
Choose a personal injury lawyer in Montgomery, AL who means business
The Montgomery, Alabama, accident lawyers at Mike Slocumb Law Firm fight aggressively for the rights of clients. We are an Alabama law firm that represents clients in a variety of personal injury cases, including car and truck accidents, motorcycle accidents, dog bites, slip and fall accidents and more.
Birmingham AL best accident lawyer in Birmingham AL Personal Injury Lawyer in Birmingham, AL
A Birmingham, AL, personal injury lawyer can stand up for you
Mike Slocumb Law Firm is represents accident victims in Alabama. If you or a loved one has been injured in any type of accident due to negligence, don't hesitate to contact the Birmingham, AL, attorneys with Slocumb Law Firm.
Huntsville AL
best injury lawyer in Huntsville AL Mike Slocumb Law Firm: A Huntsville, AL, attorney with experience
If you or a loved one has been injured in Alabama, you will need a strong Huntsville, AL, attorney you can trust. At Mike Slocumb Law Firm, we have a track record of obtaining favorable settlements for our clients. We are not afraid to take a case to trial if necessary. If you've been injured in Huntsville, or elsewhere in Alabama, you can turn to aggressive personal injury lawyers. We can handle all types of cases, from dog bites, to car accident, truck accidents and more.
Columbus GA best accident injury lawyer in Columbus GA Personal Injury Lawyer in Columbus, GA
Injured in Columbus, GA? Let Mike Slocumb Law Firm represent you. The Columbus, GA attorneys at Mike Slocumb Law Firm represent clients in Georgia who are coping with serious injuries. We serve clients throughout Columbus who have been injured for various reasons, including car accidents, slip and fall accidents and more.
Baltimore MD best accident lawyer in Baltimore Experienced attorneys in Baltimore representing injury victims. Mike Slocumb Law Firm's personal injury attorneys serve injury victims in Maryland from their Baltimore office. Our Baltimore accident lawyers represent clients who have been injured in truck accidents, car accidents, due to medical malpractice, slip and fall accidents and more.
Washington Dc best injury lawyer in Washington DC Choose an experienced Washington personal injury lawyer
An accident due to negligence can have devastating consequences. If you or a loved one was injured, you will need an experienced Washington, DC personal injury lawyer. Mike Slocumb Law Firm represents clients throughout Washington, DC. Our accident lawyers in Washington are dedicated to protecting the rights of injury victims. Contact us for a free consultation.
Houston Tx best injury lawyer in Houston TX Smith & Hassler, Attorneys at Law, provides aggressive representation in the greater metropolitan Houston, Texas, area. Our firm focuses almost exclusively on personal injury cases. Big insurance companies don't intimidate us. Insurance defense attorneys understand that our personal injury lawyers mean business.
Springfield MO best injury lawyer in Springfield MO If you or a loved one has been injured from the negligence or reckless behavior of another party, you don't have to face the insurance companies on your own. Call Tolbert, Beadle & Musgrave toll-free at (800) 487-8546 today. Serving families in Springfield, Columbia, Jefferson City, Joplin and throughout Arkansas, Kansas, Missouri & Oklahoma with aggressive representation in cases like:
Louisiana maritime lawyer Offshore and maritime workers: You deserve justice!
When you call the Law Office of William Gee III at 1-800-488-5227, you are connecting with a high-power, relentless advocate for offshore injury victims. Our firm aggressively seeks the compensation to which our clients are entitled under maritime, state, or federal law. Act now-the initial consultation is free.
Attorney Gee is a life member of one of the most prestigious groups of trial lawyers in the United States – the Million Dollar Advocates Forum and Multimillion Dollar Advocates Forum.
← The Best Car Accident Lawyer
Oregon teenage drivers face high risks during summer of causing fatal crashes →


The Rocket tassel earrings are the a very unique pair of fashion earrings. The most lightweight, special, stylish modern earrings of them all. Dangling statement earrings that have been very popular and are now available in new gorgeous colors. Tassel jewelry are a big trend! Elegant moon shaped long earrings, made of wired cord with a dangling fringe tassels. These boho earrings are super lightweight and has a touch of geometric modern in them. Dangle earrings that would be perfect for the fashionista!
5.5'' total. 2.5'' Moon shaped wired acrylic cord (1.25'' wide), 2.5'' European rayon fringe tassel.
18k gold Nickel free plated brass, plated in the USA. Very high quality.
*Can be made in silver finish with sterling silver ear wire. *We have clip ons!


text:
.class Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF;
.super Ljava/lang/Thread;
.source "NfcListenStatusChange.java"

# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = "NfcTypeScreenBF"
.end annotation

# instance fields
.field final synthetic this$0:Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;

# direct methods
.method constructor <init>(Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;)V
    .locals 0

    iput-object p1, p0, Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF;->this$0:Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;

    invoke-direct {p0}, Ljava/lang/Thread;-><init>()V

    return-void
.end method

# virtual methods
.method public run()V
    .locals 2

    iget-object v0, p0, Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF;->this$0:Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;

    iget-object v0, v0, Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange;->mHandlerBF:Landroid/os/Handler;

    new-instance v1, Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF$1;

    invoke-direct {v1, p0}, Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF$1;-><init>(Lcom/samsung/android/settings/nfc/osaifu/NfcListenStatusChange$NfcTypeScreenBF;)V

    invoke-virtual {v0, v1}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z

    return-void
.end method

redpajama_set_name: RedPajamaGithub


text:
Sens trade Mark Stone to Golden Knights
Bruce Garrioch
Feb 26, 2019 • Last Updated February 26, 2019 • 5 minute read
Mark Stone. Photo by JOHN WOODS /THE CANADIAN PRESS
It's a sin for Ottawa Senators' fans to see him go, but Mark Stone is headed for the Sin City.
As the clock struck zero on the NHL trade deadline Monday afternoon, the Senators sent their 26-year-old alternate captain to the Vegas Golden Knights in exchange for top prospect defenceman Erik Brannstrom, forward Oscar Lindberg and a second-round selection owned by the Dallas Stars in the 2020 NHL draft.
Unable to get Stone signed to a long-term contract extension, general manager Pierre Dorion put the veteran winger on the market and pushed the talks with the Knights right to the wire. Stone agreed to an eight-year contract extension with Vegas immediately that will pay him $9.5 million per season.
Stone, who was in the rink saying goodbye to his teammates Monday afternoon before they made their way to Washington to face the Capitals on Tuesday night, was excited about getting the opportunity to suit up for a playoff contender.
Oscar Lindberg. Photo by David Zalubowski /AP
ALSO: As Stone goes to Vegas, Borowiecki talks about the emotional loss of seeing friends go out the door
"There's some mixed feelings," Stone told TSN moments after the deal was announced. "I am so excited to be joining that team just seeing what they did last year in the playoffs, but I enjoyed my time in Ottawa. I loved the city, there's so many great people here, but like I said I'm just so excited to get going.
"Just playing two games there in my career, the atmosphere, the city, the lineup that they put on the ice every night and just the ownership's commitment to winning. I can't wait and I'm so excited to be a part of it."
Erik Brannstrom with Sweden. Photo by JOEL MARKLUND /THE CANADIAN PRESS
Stone said he will miss Ottawa and it wasn't easy to move on.
"I can't even describe it," said Stone. "The amount of hours sitting on the couch thinking about this was crazy. My heart was here. I set roots here. I loved playing for the Ottawa Senators, but I didn't take this decision for granted.
BRENNAN: Quickly analyzing the Mark Stone trade and the Ottawa hockey market afterwards
Offered an eight-year deal by the Senators last Wednesday with a deadline to agree to a deal before the puck dropped at 7 p.m. in New Jersey, there was hope heading into the weekend the two sides might be able to come to a resolution on a new contract.
Stone indicated he did a lot of soul-searching before he decided to move on and the Senators were told Friday morning that it was best they seek a trade for Stone. It's believed the Nashville Predators, Calgary Flames, New York Islanders and Winnipeg Jets all made a push before a deal with the Knights was done.
"Like I said, everything I did from the start was going to be between me and Ottawa. They were awesome throughout the whole situation. Both of us tried hard to get something done. Ultimately, it came to this and I've got nothing but respect for the way that they handled it."
Of course, the Senators are going to miss Stone because he wasn't just a player for this team, he was a leader and a guy they wanted to use as a centrepiece in the rebuild. They didn't want to deal him and tried desperately to keep him in the fold because he got the job done on and off the ice and led by example.
MORE: Reactions to huge Mark Stone deal
Even before Stone was officially dealt, coach Guy Boucher sung his praises for the work he did with the organization.
"You don't have to tell Mark the same thing twice," Boucher said Monday afternoon. "When you're asking for things, you see it right away through him, so without even saying a word that's leadership.
Mark Stone. Photo by Sean Kilpatrick /THE CANADIAN PRESS
"Because if you want to know how to do a drill, look at Mark, if you want to know things are going, ask Mark. He's very smart and his work ethic was every day the same, the maximum he could give. In terms of action, he was outstanding for sure."
Boucher said since he arrived here at the start of the 2016-17 campaign, Stone has come into his own as a player.
https://www.youtube.com/watch?v=bmk2xXXh8zI&feature=youtu.be
The Senators addressed the blockbuster Mark Stone trade after the deadline.
"What I saw in the last three years was growth is in his leadership," said Boucher. "You could see his influence grew amongst the group on a social side to which I didn't see the first year I was here three years ago. He was more of a quiet guy, as I'm sure you guys know. Mark's not someone that's just going to talk to say whatever. It's very precise, it's very thought-through.
"That's definitely part of leadership. It's a clear path with Mark and the players were definitely look at him say this is the way things are done."
The decision to deal Stone is sending shockwaves through the community. Yes, it's been speculated for weeks, but the hope here has always been that the Senators would be able to resolve the differences with Stone's camp and get a deal done.
Dorion started his news conference by thanking Stone for his contributions to the organization and in the community.
"We've seen first hand how much he's invested in becoming the remarkable player that he is today," Dorion said.
WHAT'S THE DEAL: The Senators dealt winger Mark Stone to the Vegas Golden Knights on Monday for prospect defenceman Erik Brannstrom, forward Oscar Lindberg and a second-round selection owned by the Dallas Stars in the 2020 NHL draft.
THE RETURN: Brannstrom is the key piece to this deal. The Senators scouts have followed him close and they feel he has plenty of upside potential. Gord Miller of TSN suggested Monday that Brannstrom has been compared to Erik Karlsson because he's that good.
THE QUOTE: "Erik Brannstrom is the top defence prospect in the game; simply a dynamic talent who will be a major component of our future," said general manager Pierre Dorion. "He was undoubtedly the best prospect available at the trade deadline and in addition to his talent, he is a natural born leader."
THE LAST WORD: Stone has agreed to an eight-year deal worth $9.5 million per-season with the Knights.
bgarrioch@postmedia.com
Twitter: @sungarrioch
NHL TRADE DEADLINE: Jets land Hayes, Panthers deal Brassard
Senators start day with minor league deal
GIBBONS: Could LeBreton offer Ottawa Senators fans the win they need?

redpajama_set_name: RedPajamaCommonCrawl


Yesterday, the Group published its Interim Report together with an analysis of the evidence submitted to the Group. Following the previous resignation of Professor James Hunter, it was also announced that the one other member with (limited) experience of land reform has also resigned – Dr Sarah Skerrat. She is the co-author of the report along with the one member left from the original Group – the Chair Alison Elliot.
This tenant farmer, as one who recognises an urgent need for radical land reform, shares your deep concerns.
Without such reforms, denying fundamental power to those who need it, independence will achieve nothing.
I liked the way that estate interests complained about a lack of evidence for the benefits of wider ownership and yet still managed to complain about adverse impacts on conservation and tourism without, er, providing any evidence.
Maybe we should produce an alternative report and then start a petition on change.org to demonstrate support for that.
He will be moving there after switching sides to the NO campaign at the last minute.
Better to view it as a battle lost rather than the war. Land reform in Scotland will not go away it's far to important to just let die.
If we get our independence back in 2014 and if we want to build a prosperous, modern economy, land reform is a neccesary part of that process.
It will come eventually whatever the big landowners, vested interests and offshore hidey holes say and do!
Agreed, but it is time to start making the point that land reform is the key issue toward both achieving our independence and why we need to achieve it. We sure as hell won't get land reform without independence or will we get independence without definitive steps toward meaningful land reform.
It's so difficult to get otherwise radically-minded independence supporters to understand the importance of land; most seem to feel that Scotland's land ownership system as having been handed down on Mount Ararat as some sort of 11th Commandment, god-given and immutable. Just goes to show how effectively the rich and powerful have protected their own interests.
"Just 16 owners have 10% of Scotland's land and get tax breaks for doing so… If we want to have any real hope of changing the current patterns of land ownership in Scotland, then we have to be bold. We have to be radical. Conference, Scottish Labour will commit to extend rights for community purchase of land and for those rights to be available across Scotland.
So Labour are clearly up for doing something and it's not absolutely inconceivable that this could prod the Scottish Government into some sort of action even if only to stop Labour making political capital.
Very fair comment. I should have made clear that my remarks relate to the actions of the existing Scottish Government. Of course, Labour, Greens, Lib Dems etc all have ambitions in this field. In fact I am meeting Johann Lamont tomorrow to talk about this very topic.
Well, if the initial Jimmy Reid Common Weal effort is any indication, you've got your work cut out there as well.
Since Labour's ideology is based upon the proposition that all value emanates from Labour, Land Reform – other than nationalisation, comrade – has never been on their radar screen.
Meant to say that in response to Stuart's wishful thinking!
If folks had never worked for change and brought it about sometimes after centuries of work we would all still be living in holes in the ground!
As tenant farmers I thought that the LRRG came, listened and understood our situation. I thought that their remit was to identity a way of addressing the balance of power and adopt radical thinking. I thought that they understood our feeling of hopelessness and powerlessness. Apparently I was wrong. The LRRG have washed their hands of us and thrown us into the lions' den. Like King Darious, the LRRG have thrown us to the mercy of the TFF.
Without doubt our faith lies with the Scottish government, and they will deliver us from the TFF, just as Daniel was delivered and saved.
It's now up to us, to put all our trust into Holyrood, and explain to them how different things could be, and how we are ready, willing and able to contribute to the economic growth of Scotland. Only then, when we are given a chance, and shake off the suppressing nature of feudalism will we be free to do exactly that.
The LRRG was given an opportunity to contribute to this, instead they chose to ignore us. No wonder Jim Hunter's name is excluded from this interim report.
We were invited to write in and give evidence. We were questioned and invited to expose our thoughts. Then we were abandoned, ignored and betrayed. Thanks to the LRRG we are now in a worse position, risking reprisals from the landlord.
When Alison Elliot was question by the RACCE committee, she expressed her awareness of how difficult it may be to get to the grass roots and hear from those people who are not used to speaking out, and preparing written submissions. This was a challenge she was up for. Now though, in her interim report, she puts great store in the percentage figures of opinion, so eloquently put in glossy submissions and videos of a vociferous minority, the landed elite, who rally up scores of submissions. Every page of the interim report seems to contain the views of large estates. No wonder we feel angry and betrayed.
The TFF messed up with the Rent Review Group, so why these two authors think the TFF are the ones who can be "sensitive and expert" and are able to sort out "problematic and complex" issues with regard to tenancies is anybody's guess !
With two out of the three LRRG members resigning, one wonders what has been happening behind the doors of the LRRG.
Yes indeed, when the first went you wonder, but leave it at that.
When the second goes I ask, what sort of person in SRUC offers promotion to a key player in this project at such a sensitive time and what sort of person would consider any other job more important?
A person who is not being allowed to influence the direction of the report in the way she believes it should go? Just guessing, but she certainly gave me every opportunity at a meeting to speak about our experience and appeared to fully understand and sympathise.
As others I know enjoyed similar reception and response at a meeting, I suggest that is a good guess Alison.
A particular problem is that one of the most useful weapons in achieving land reform – taxation – is simply not available until we have achieved independence. Once we have that, it is far easier to decide what the desired end(s) should be, and use the stick (and the carrot of offset arrangements) to achieve it. For example, if we desired to make more land available for individuals to purchase, live, or work on – especially with the end of repopulating parts of the Highlands in view – we could levy a land tax for estates over a certain acreage, which could be offset against land released for sale. Equally, the absentee problem could be looked at in terms on insisting the owner (or a designated director in the case of corporates) was in residence for 90 days each year, failing which…tax! But we can't do such things without independence, so to some degree the LRRG was bound to eschew the radical options. This is not to say that the evidence it has gathered will not come in useful once we have the full ability to act on it.
We could do all that you suggest now within the existing devolution powers. Local govt taxation is devolved and is based upon land/property. Would just require reform to make it into a proper land tax. Similarly residency is within powers of Scots law of land tenure (some agricultural tenants & all crofters have residency obligations) and these could be extended to owners too.
I completely agree, the powers ARE there already. It requires only a change in legislation. The old question still remains, why is there one rule book for crofters, and another modified rule book for lairds? (and further stricter rules for tenants……Sir Crispen Agnew had very interesting views on this at an evidence giving session for the RACCE committee) What an opportunity the LRRG had. They must be held accountable for their actions…or lack of. Social justice for all please.
Land Rental Value approach for 100 years. Well no surprises from the LRRG, with its chairperson being from one of the biggest property owners in the country and the SRBPA stating on their website how pleased they were to see two of their members being appointed.
I concede the point – what is your preferred term?
Section 65 (new section 16A of 1991 Act) only applies if the lease contains a residency clause. Older leases tend to, more modern ones don't.
Indeed. I will edit by adding "some" in case my meaning is not clear.


text:
package org.apache.ranger.plugin.model.validation;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.ranger.plugin.errors.ValidationErrorCode;
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerPolicy.RangerPolicyResource;
import org.apache.ranger.plugin.model.RangerSecurityZone;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerAccessTypeDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerEnumElementDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerResourceDef;
import org.apache.ranger.plugin.model.RangerServiceDef.RangerServiceConfigDef;
import org.apache.ranger.plugin.store.ServiceStore;
import org.apache.ranger.plugin.util.RangerObjectFactory;

public abstract class RangerValidator {

	private static final Log LOG = LogFactory.getLog(RangerValidator.class);

	ServiceStore _store;
	RangerObjectFactory _factory = new RangerObjectFactory();

	public enum Action {
		CREATE, UPDATE, DELETE;
	};

	protected RangerValidator(ServiceStore store) {
		if (store == null) {
			throw new IllegalArgumentException("ServiceValidator(): store is null!");
		}
		_store = store;
	}

	public void validate(Long id, Action action) throws Exception {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.validate(" + id + ")");
		}

		List<ValidationFailureDetails> failures = new ArrayList<>();
		if (isValid(id, action, failures)) {
			if(LOG.isDebugEnabled()) {
				LOG.debug("<== RangerValidator.validate(" + id + "): valid");
			}
		} else {
			String message = serializeFailures(failures);
			LOG.debug("<== RangerValidator.validate(" + id + "): invalid, reason[" + message + "]");
			throw new Exception(message);
		}
	}
    public void validate(String name, Action action) throws Exception {
        if(LOG.isDebugEnabled()) {
            LOG.debug("==> RangerValidator.validate(" + name + ")");
        }

        List<ValidationFailureDetails> failures = new ArrayList<>();
        if (isValid(name, action, failures)) {
            if(LOG.isDebugEnabled()) {
                LOG.debug("<== RangerValidator.validate(" + name + "): valid");
            }
        } else {
            String message = serializeFailures(failures);
            LOG.debug("<== RangerValidator.validate(" + name + "): invalid, reason[" + message + "]");
            throw new Exception(message);
        }
    }

	/**
	 * This method is expected to be overridden by sub-classes.  Default implementation provided to not burden implementers from having to implement methods that they know would never be called.
	 * @param id
	 * @param action
	 * @param failures
	 * @return
	 */
	boolean isValid(Long id, Action action, List<ValidationFailureDetails> failures) {
		failures.add(new ValidationFailureDetailsBuilder()
				.isAnInternalError()
				.becauseOf("unimplemented method called")
				.build());
		return false;
	}

    boolean isValid(String name, Action action, List<ValidationFailureDetails> failures) {
        failures.add(new ValidationFailureDetailsBuilder()
                .isAnInternalError()
                .becauseOf("unimplemented method called")
                .build());
        return false;
    }

	public static String serializeFailures(List<ValidationFailureDetails> failures) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getFailureMessage()");
		}

		String message = null;
		if (CollectionUtils.isEmpty(failures)) {
			LOG.warn("serializeFailures: called while list of failures is null/empty!");
		} else {
			StringBuilder builder = new StringBuilder();
			for (int i = 0; i < failures.size(); i++) {
				builder.append(String.format("(%d)", i));
				builder.append(failures.get(i));
				builder.append(" ");
			}
			message = builder.toString();
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.serializeFailures(): " + message);
		}
		return message;
	}

	Set<String> getServiceConfigParameters(RangerService service) {
		if (service == null || service.getConfigs() == null) {
			return new HashSet<>();
		} else {
			return service.getConfigs().keySet();
		}
	}

	Set<String> getRequiredParameters(RangerServiceDef serviceDef) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getRequiredParameters(" + serviceDef + ")");
		}

		Set<String> result;
		if (serviceDef == null) {
			result = Collections.emptySet();
		} else {
			List<RangerServiceConfigDef> configs = serviceDef.getConfigs();
			if (CollectionUtils.isEmpty(configs)) {
				result = Collections.emptySet();
			} else {
				result = new HashSet<String>(configs.size()); // at worse all of the config items are required!
				for (RangerServiceConfigDef configDef : configs) {
					if (configDef.getMandatory()) {
						result.add(configDef.getName());
					}
				}
			}
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getRequiredParameters(" + serviceDef + "): " + result);
		}
		return result;
	}

	RangerServiceDef getServiceDef(Long id) {

		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getServiceDef(" + id + ")");
		}
		RangerServiceDef result = null;
		try {
			result = _store.getServiceDef(id);
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving service def from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getServiceDef(" + id + "): " + result);
		}
		return result;
	}

	RangerServiceDef getServiceDef(String type) {

		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getServiceDef(" + type + ")");
		}
		RangerServiceDef result = null;
		try {
			result = _store.getServiceDefByName(type);
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving service definition from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getServiceDef(" + type + "): " + result);
		}
		return result;
	}

	RangerService getService(Long id) {

		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getService(" + id + ")");
		}
		RangerService result = null;
		try {
			result = _store.getService(id);
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving service from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getService(" + id + "): " + result);
		}
		return result;
	}

	RangerService getService(String name) {

		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getService(" + name + ")");
		}
		RangerService result = null;
		try {
			result = _store.getServiceByName(name);
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving service from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getService(" + name + "): " + result);
		}
		return result;
	}

	RangerPolicy getPolicy(Long id) {

		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getPolicy(" + id + ")");
		}
		RangerPolicy result = null;
		try {
			result = _store.getPolicy(id);
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving policy from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getPolicy(" + id + "): " + result);
		}
		return result;
	}

	Long getPolicyId(final Long serviceId, final String policyName, final Long zoneId) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getPolicyId(" + serviceId + ", " + policyName + ", " + zoneId + ")");
		}

		Long policyId = _store.getPolicyId(serviceId, policyName, zoneId);

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getPolicyId(" + serviceId + ", " + policyName + ", " + zoneId + "): policy-id[" + policyId + "]");
		}
		return policyId;
	}

	List<RangerPolicy> getPoliciesForResourceSignature(String serviceName, String policySignature) {
		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerValidator.getPoliciesForResourceSignature(%s, %s)", serviceName, policySignature));
		}

		List<RangerPolicy> policies = null;
		try {
			policies = _store.getPoliciesByResourceSignature(serviceName, policySignature, true); // only look for enabled policies
		} catch (Exception e) {
			LOG.debug("Encountred exception while retrieving policies from service store!", e);
		}

		if(LOG.isDebugEnabled()) {
			int count = policies == null ? 0 : policies.size();
			LOG.debug(String.format("<== RangerValidator.getPoliciesForResourceSignature(%s, %s): count[%d], %s", serviceName, policySignature, count, policies));
		}
		return policies;
	}

    RangerSecurityZone getSecurityZone(Long id) {
        if(LOG.isDebugEnabled()) {
            LOG.debug("==> RangerValidator.getSecurityZone(" + id + ")");
        }
        RangerSecurityZone result = null;

        if (id != null) {
            try {
                result = _store.getSecurityZone(id);
            } catch (Exception e) {
                LOG.debug("Encountred exception while retrieving security zone from service store!", e);
            }
        }

        if(LOG.isDebugEnabled()) {
            LOG.debug("<== RangerValidator.getSecurityZone(" + id + "): " + result);
        }
        return result;
    }

	RangerSecurityZone getSecurityZone(String name) {
        if(LOG.isDebugEnabled()) {
            LOG.debug("==> RangerValidator.getSecurityZone(" + name + ")");
        }
        RangerSecurityZone result = null;

        if (StringUtils.isNotEmpty(name)) {
            try {
                result = _store.getSecurityZone(name);
            } catch (Exception e) {
                LOG.debug("Encountred exception while retrieving security zone from service store!", e);
            }
        }

        if(LOG.isDebugEnabled()) {
            LOG.debug("<== RangerValidator.getSecurityZone(" + name + "): " + result);
        }
        return result;
    }
	Set<String> getAccessTypes(RangerServiceDef serviceDef) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getAccessTypes(" + serviceDef + ")");
		}

		Set<String> accessTypes = new HashSet<>();
		if (serviceDef == null) {
			LOG.warn("serviceDef passed in was null!");
		} else if (CollectionUtils.isEmpty(serviceDef.getAccessTypes())) {
			LOG.warn("AccessTypeDef collection on serviceDef was null!");
		} else {
			for (RangerAccessTypeDef accessTypeDef : serviceDef.getAccessTypes()) {
				if (accessTypeDef == null) {
					LOG.warn("Access type def was null!");
				} else {
					String accessType = accessTypeDef.getName();
					if (StringUtils.isBlank(accessType)) {
						LOG.warn("Access type def name was null/empty/blank!");
					} else {
						accessTypes.add(accessType);
					}
				}
			}
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getAccessTypes(" + serviceDef + "): " + accessTypes);
		}
		return accessTypes;
	}

	/**
	 * This function exists to encapsulates the current behavior of code which treats and unspecified audit preference to mean audit is enabled.
	 * @param policy
	 * @return
	 */
	boolean getIsAuditEnabled(RangerPolicy policy) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getIsAuditEnabled(" + policy + ")");
		}

		boolean isEnabled = false;
		if (policy == null) {
			LOG.warn("policy was null!");
		} else if (policy.getIsAuditEnabled() == null) {
			isEnabled = true;
		} else {
			isEnabled = policy.getIsAuditEnabled();
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getIsAuditEnabled(" + policy + "): " + isEnabled);
		}
		return isEnabled;
	}

	/**
	 * Returns names of resource types set to lower-case to allow for case-insensitive comparison.
	 * @param serviceDef
	 * @return
	 */
	Set<String> getMandatoryResourceNames(RangerServiceDef serviceDef) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getMandatoryResourceNames(" + serviceDef + ")");
		}

		Set<String> resourceNames = new HashSet<>();
		if (serviceDef == null) {
			LOG.warn("serviceDef passed in was null!");
		} else if (CollectionUtils.isEmpty(serviceDef.getResources())) {
			LOG.warn("ResourceDef collection on serviceDef was null!");
		} else {
			for (RangerResourceDef resourceTypeDef : serviceDef.getResources()) {
				if (resourceTypeDef == null) {
					LOG.warn("resource type def was null!");
				} else {
					Boolean mandatory = resourceTypeDef.getMandatory();
					if (mandatory != null && mandatory) {
						String resourceName = resourceTypeDef.getName();
						if (StringUtils.isBlank(resourceName)) {
							LOG.warn("Resource def name was null/empty/blank!");
						} else {
							resourceNames.add(resourceName.toLowerCase());
						}
					}
				}
			}
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getMandatoryResourceNames(" + serviceDef + "): " + resourceNames);
		}
		return resourceNames;
	}

	Set<String> getAllResourceNames(RangerServiceDef serviceDef) {
		if(LOG.isDebugEnabled()) {
			LOG.debug("==> RangerValidator.getAllResourceNames(" + serviceDef + ")");
		}

		Set<String> resourceNames = new HashSet<>();
		if (serviceDef == null) {
			LOG.warn("serviceDef passed in was null!");
		} else if (CollectionUtils.isEmpty(serviceDef.getResources())) {
			LOG.warn("ResourceDef collection on serviceDef was null!");
		} else {
			for (RangerResourceDef resourceTypeDef : serviceDef.getResources()) {
				if (resourceTypeDef == null) {
					LOG.warn("resource type def was null!");
				} else {
					String resourceName = resourceTypeDef.getName();
					if (StringUtils.isBlank(resourceName)) {
						LOG.warn("Resource def name was null/empty/blank!");
					} else {
						resourceNames.add(resourceName.toLowerCase());
					}
				}
			}
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug("<== RangerValidator.getAllResourceNames(" + serviceDef + "): " + resourceNames);
		}
		return resourceNames;
	}

	/**
<<<<<<>>>>>> Huge code-cleanup in lot's of places
	 * @param policy
	 * @return
	 */

	void convertPolicyResourceNamesToLower(RangerPolicy policy) {
		Map<String, RangerPolicyResource> lowerCasePolicyResources = new HashMap<>();
		if (policy.getResources() != null) {
			for (Map.Entry<String, RangerPolicyResource> entry : policy.getResources().entrySet()) {
				String lowerCasekey = entry.getKey().toLowerCase();
				lowerCasePolicyResources.put(lowerCasekey, entry.getValue());
			}
		}
		policy.setResources(lowerCasePolicyResources);
	}

	Map<String, String> getValidationRegExes(RangerServiceDef serviceDef) {
		if (serviceDef == null || CollectionUtils.isEmpty(serviceDef.getResources())) {
			return new HashMap<>();
		} else {
			Map<String, String> result = new HashMap<>();
			for (RangerResourceDef resourceDef : serviceDef.getResources()) {
				if (resourceDef == null) {
					LOG.warn("A resource def in resource def collection is null");
				} else {
					String name = resourceDef.getName();
					String regEx = resourceDef.getValidationRegEx();
					if (StringUtils.isBlank(name)) {
						LOG.warn("resource name is null/empty/blank");
					} else if (StringUtils.isBlank(regEx)) {
						LOG.debug("validation regex is null/empty/blank");
					} else {
						result.put(name, regEx);
					}
				}
			}
			return result;
		}
	}

	int getEnumDefaultIndex(RangerEnumDef enumDef) {
		int index;
		if (enumDef == null) {
			index = -1;
		} else if (enumDef.getDefaultIndex() == null) {
			index = 0;
		} else {
			index = enumDef.getDefaultIndex();
		}
		return index;
	}

	Collection<String> getImpliedGrants(RangerAccessTypeDef def) {
		if (def == null) {
			return null;
		} else if (CollectionUtils.isEmpty(def.getImpliedGrants())) {
			return new ArrayList<>();
		} else {
			List<String> result = new ArrayList<String>(def.getImpliedGrants().size());
			for (String name : def.getImpliedGrants()) {
				if (StringUtils.isBlank(name)) {
					result.add(name); // could be null!
				} else {
					result.add(name.toLowerCase());
				}
			}
			return result;
		}
	}

	/**
	 * Returns a copy of the policy resource map where all keys (resource-names) are lowercase
	 * @param input
	 * @return
	 */
	Map<String, RangerPolicyResource> getPolicyResourceWithLowerCaseKeys(Map<String, RangerPolicyResource> input) {
		if (input == null) {
			return null;
		}
		Map<String, RangerPolicyResource> output = new HashMap<String, RangerPolicyResource>(input.size());
		for (Map.Entry<String, RangerPolicyResource> entry : input.entrySet()) {
			output.put(entry.getKey().toLowerCase(), entry.getValue());
		}
		return output;
	}

	boolean isUnique(Long value, Set<Long> alreadySeen, String valueName, String collectionName, List<ValidationFailureDetails> failures) {
		return isUnique(value, null,  alreadySeen, valueName, collectionName, failures);
	}

	/**
	 * NOTE: alreadySeen collection passed in gets updated.
	 * @param value
	 * @param alreadySeen
	 * @param valueName - use-friendly name of the value that would be used when generating failure message
	 * @param collectionName - use-friendly name of the value collection that would be used when generating failure message
	 * @param failures
	 * @return
	 */
	boolean isUnique(Long value, String valueContext, Set<Long> alreadySeen, String valueName, String collectionName, List<ValidationFailureDetails> failures) {
		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s)", value, alreadySeen, valueName, collectionName, failures));
		}
		boolean valid = true;

		if (value == null) {  // null/empty/blank value is an error
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.subField(valueContext)
				.isMissing()
				.becauseOf(String.format("%s[%s] is null/empty", valueName, value))
				.build());
			valid = false;
		} else if (alreadySeen.contains(value)) { // it shouldn't have been seen already
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.subField(value.toString())
				.isSemanticallyIncorrect()
				.becauseOf(String.format("duplicate %s[%s] in %s", valueName, value, collectionName))
				.build());
			valid = false;
		} else {
			alreadySeen.add(value); // we have a new unique access type
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s): %s", value, alreadySeen, valueName, collectionName, failures, valid));
		}
		return valid;
	}

	/**
	 * NOTE: alreadySeen collection passed in gets updated.
	 * @param value
	 * @param alreadySeen
	 * @param valueName - use-friendly name of the value that would be used when generating failure message
	 * @param collectionName - use-friendly name of the value collection that would be used when generating failure message
	 * @param failures
	 * @return
	 */
	boolean isUnique(Integer value, Set<Integer> alreadySeen, String valueName, String collectionName, List<ValidationFailureDetails> failures) {
		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s)", value, alreadySeen, valueName, collectionName, failures));
		}
		boolean valid = true;

		if (value == null) {  // null/empty/blank value is an error
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.isMissing()
				.becauseOf(String.format("%s[%s] is null/empty", valueName, value))
				.build());
			valid = false;
		} else if (alreadySeen.contains(value)) { // it shouldn't have been seen already
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.subField(value.toString())
				.isSemanticallyIncorrect()
				.becauseOf(String.format("duplicate %s[%s] in %s", valueName, value, collectionName))
				.build());
			valid = false;
		} else {
			alreadySeen.add(value); // we have a new unique access type
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s): %s", value, alreadySeen, valueName, collectionName, failures, valid));
		}
		return valid;
	}

	/*
	 * Important: Resource-names are required to be lowercase. This is used in validating policy create/update operations.
	 * Ref: RANGER-2272
	 */
	boolean isValidResourceName(final String value, final String valueContext, final List<ValidationFailureDetails> failures) {
		boolean ret = true;

		if (value != null && !StringUtils.isEmpty(value)) {
			int sz = value.length();

			for(int i = 0; i < sz; ++i) {
				char c = value.charAt(i);
				if (!(Character.isLowerCase(c) || c == '-' || c == '_')) { // Allow only lowercase, hyphen or underscore characters
					ret = false;
					break;
				}
			}
		} else {
			ret = false;
		}
		if (!ret) {
			ValidationErrorCode errorCode = ValidationErrorCode.SERVICE_DEF_VALIDATION_ERR_NOT_LOWERCASE_NAME;
			failures.add(new ValidationFailureDetailsBuilder()
					.errorCode(errorCode.getErrorCode())
					.field(value)
					.becauseOf(errorCode.getMessage(valueContext, value))
					.build());
		}
		return ret;
	}

	boolean isUnique(final String value, final Set<String> alreadySeen, final String valueName, final String collectionName, final List<ValidationFailureDetails> failures) {
		return isUnique(value, null, alreadySeen, valueName, collectionName, failures);
	}
	/**
	 * NOTE: alreadySeen collection passed in gets updated.
	 * @param value
	 * @param alreadySeen
	 * @param valueName - use-friendly name of the value that would be used when generating failure message
	 * @param collectionName - use-friendly name of the value collection that would be used when generating failure message
	 * @param failures
	 * @return
	 */
	boolean isUnique(final String value, final String valueContext, final Set<String> alreadySeen, final String valueName, final String collectionName, final List<ValidationFailureDetails> failures) {
		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s)", value, alreadySeen, valueName, collectionName, failures));
		}
		boolean valid = true;

		if (StringUtils.isBlank(value)) {  // null/empty/blank value is an error
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.subField(valueContext)
				.isMissing()
				.becauseOf(String.format("%s[%s] is null/empty", valueName, value))
				.build());
			valid = false;
		} else if (alreadySeen.contains(value.toLowerCase())) { // it shouldn't have been seen already
			failures.add(new ValidationFailureDetailsBuilder()
				.field(valueName)
				.subField(value)
				.isSemanticallyIncorrect()
				.becauseOf(String.format("duplicate %s[%s] in %s", valueName, value, collectionName))
				.build());
			valid = false;
		} else {
			alreadySeen.add(value.toLowerCase()); // we have a new unique access type
		}

		if(LOG.isDebugEnabled()) {
			LOG.debug(String.format("==> RangerServiceDefValidator.isValueUnique(%s, %s, %s, %s, %s): %s", value, alreadySeen, valueName, collectionName, failures, valid));
		}
		return valid;
	}

	Map<String, RangerEnumDef> getEnumDefMap(List<RangerEnumDef> enumDefs) {
		Map<String, RangerEnumDef> result = new HashMap<>();
		if (enumDefs != null) {
			for (RangerEnumDef enumDef : enumDefs) {
				result.put(enumDef.getName(), enumDef);
			}
		}
		return result;
	}

	Set<String> getEnumValues(RangerEnumDef enumDef) {
		Set<String> result = new HashSet<>();
		if (enumDef != null) {
			for (RangerEnumElementDef element : enumDef.getElements()) {
				result.add(element.getName());
			}
		}
		return result;
	}

	static Map<Integer, Integer> createMap(int[][] data) {
		Map<Integer, Integer> result = new HashMap<>();
		if (data != null) {
			for (int[] row : data) {
				Integer key = row[0];
				Integer value = row[1];
				if (result.containsKey(key)) {
					LOG.warn("createMap: Internal error: duplicate key: multiple rows found for [" + key + "]. Skipped");
				} else {
					result.put(key, value);
				}
			}
		}
		return result;
	}

	static Map<Integer, String> createMap(Object[][] data) {
		Map<Integer, String> result = new HashMap<>();
		if (data != null) {
			for (Object[] row : data) {
				Integer key = (Integer)row[0];
				String value = (String)row[1];
				if (key == null) {
					LOG.warn("createMap: error converting key[" + row[0] + "] to Integer! Sipped!");
				} else if (StringUtils.isEmpty(value)) {
					LOG.warn("createMap: empty/null value.  Skipped!");
				} else if (result.containsKey(key)) {
					LOG.warn("createMap: Internal error: duplicate key.  Multiple rows found for [" + key + "]. Skipped");
				} else {
					result.put(key, value);
				}
			}
		}
		return result;
	}
}


Would you like to receive announcements about new IIF Transaction Creator versions by email? More details and free registration here.
IIF Transaction Creator has been saved to your software list.
The IIF Creator converts worksheet data into IIF files for import into QuickBooks. As an Excel addin it integrates with Excel and is available directly from the menus in Excel.


We offer a superb & first class fire alarm maintenance package that ensures your alarm is working all year round giving you complete peace of mind.
Westmorland Fire & Security offer a complete design, supply and installation service covering security and fire systems across the North West, including Lancaster, Kendal as well as all of Cumbria and Lancashire. A Public Address (PA) System is an electronic amplification system that consists of a mixer, a tannoy, an amplifier and at least two loudspeakers used to strengthen a given sound, either from a voice or music, and disperse the sound throughout a building. In large industrial buildings or factories it can be difficult to find employees or engineers. With a sound PA System it is simple, just speak over the tannoy and listen to your voice carry all around the building with ease.
How can a public address system help with your security?
Audio PA Systems can be used in small venues such as schools and small bars, or very large institutional or commercial buildings, requiring the use of several speakers spread all around the buildings. Sound PA Systems are designed for varying needs from entertainment and information to security purposes. Portable PA Systems are ideal in places that fixed installation is difficult. They can work off of a battery or mains power and are extremely effective at carrying sounds across venues. Audio PA Systems are excellent as part of a security package, and are often recommended within a security systems. Because of the way that PA Systems can be accessed remotely this can allow the user to speak over the tannoy if there is an intruder within the premises.
This has been proven to help limit damage caused by vandals or burglars and deter any would be intruders. As well as site-wide Public Address Systems it is possible to install Voice Evacuation Systems, for use in emergency situations. In situations where evacuation is complicated, such as in high-rise buildings or football stadiums, human voice is often used to provide information through a Voice Evacuation System. When getting in security specialists to install your PA Systems or Voice Evacuation Systems the bulk of the work can be done during the night or hours that suit your business and the premises you work within. Sound PA Systems are simple to fit to almost any building.
Sound PA Systems are simple to fit to almost any building. Our PA system expert installers can help you with which system would be appropriate to your needs and premises. For many years our experts have been a leading UK systems company designing, supplying and installing sound, fire, security & communications systems. They can offer you expert advice on security and how to deter would be vandals. For any more information on Public Address Systems contact our security specialists.


Conflict is an every day reality in our organizations, communities, and around the world. We believe that conflicts, if well managed or transformed, can provide an opportunity for positive change.
At the Kroc School, we have designed a nine-month Master of Science in Conflict Management and Resolution (MS-CMR) to provide you with the knowledge, frameworks and skills to transform conflict dynamics. This program combines conflict management with conflict resolution. This means you will learn skills to understand and address individual and organizational situations as well as system-level conflict in a variety of cultural contexts. In the MS-CMR, you will learn how to best manage conflicts - by refocusing energy and changing perspectives - and gain skills to successfully resolve conflicts, through mediation, negotiation, facilitation and dialogue processes.
If you are a working professional in any field with the experience to recognize the challenges and opportunities inherent to conflict, this program is for you. The Kroc School's innovative approach to conflict management and resolution combines multidimensional perspectives for problem solving with diverse strategies and finding effective approaches to intractable situations. In this program you will learn through ongoing experimentation, simulation and practice, inside and outside the classroom from the only conflict resolution degree on the West Coast that is housed in a Peace School.
Master conflict management and resolution with world-class faculty like Dr. Ami Carpenter. Dr. Carpenter is a practitioner specializing in interethnic conflict resolution. She works in mediation, facilitation, training and conflict resolution consulting. Carpenter currently advises the U.S. Institute of Peace, Interpeace and the San Diego Commission on Gang Prevention and Intervention.
As a graduate, you will understand the complex dynamics and underlying causes of conflicts allowing you to develop effective strategies and solutions.
The MS-CMR will give you a one-of-a-kind conflict toolkit to be applied in diverse conflict environments, from interpersonal conflict, to intergroup or interreligious conflict, to transnational conflict.


text:
Hybrid Works Get Messy
Posted: Wednesday June 16, 2021
"Messy" is right. Below is an article outlining the conversations we are having 5 times a day right now with our clients. How do we come back to work and what are the rules, office space layouts, and long-term consequences of allowing everyone to partially work from home?
Here is what we are telling our clients:
—There is no right answer. We have to get inside the company, the culture, the current office space layout, the remaining term of the lease and many more critical components to make a decision.
–We are spending way more time talking about business strategy than ever. Why? Because the strategy and the execution is critical to the decisions being made on the office space.
–The war for talent is real. It's here. It's not going away. Read this to see how competitive the market is.
Your office space, your furniture, and the feeling people get when they walk the space is more critical now than ever before in the last 40 years. Make sure it fits who you are hiring and the culture you want.
We are happy to talk to you and your team if you need guidance or simply want to make sure you have a sound plan for navigating this messiness.
If You Thought Working From Home Was Messy, Here Comes Hybrid Work
Mandatory Mondays and Fridays. Unused desks and crowded conference rooms. Employers and workers navigate a return to offices.
By Chip Cutter
Tech-company employees working at their desks in San Francisco in October 2019, a few months before the Covid-19 pandemic transformed office life. PHOTO: KELSEY MCCLELLAN FOR THE WALL STREET JOURNAL
It took months for bosses and employees to adjust to working remotely in the pandemic. The next era of work might be even more messy.
Companies are laying down new rules and setting expectations for hybrid work as some workers come back in and others remain out of office. At JPMorgan Chase JPM +0.65% & Co., employees on some teams can schedule work-from-home days, but not on Mondays or Fridays. At Salesforce.com Inc. offices that have reopened, Thursdays are proving to be the most popular in-office day, creating high demand for meeting rooms and collaboration spaces, and prompting the company to rethink its office design.
Executives at PricewaterhouseCoopers LLP have voiced worries that workers who stay remote could wind up as second-class corporate citizens, falling behind in promotions and pay, so the company plans to track rates of advancement for office-based and remote staff in an effort to make sure nobody lags behind.
After months of discussions, big employers from Humana Inc. in Louisville, Ky., to Nike Inc. near Portland, Ore., say they are cementing plans to return to corporate complexes after Labor Day—in some cases relaxing capacity restrictions—while also promising employees some measure of flexibility in where they work.
Covid-19 isn't the only factor weighing on workplaces. Many managers now worry about a brain drain from their ranks. Some companies that are hiring say they can't find knowledge workers willing to come into an office five days a week, according to chief executives, human-resource chiefs and recruiters.
OnSolve LLC, a software company based in Alpharetta, Ga., is hiring for about 90 new positions this year. Chief Executive Mark Herrington says he is eager for office life to return to normal, but a number of applicants, particularly in technical and engineering roles, have insisted on having the option to work from home at least some of the time.
"It's become really sort of a requirement if you're looking for top talent," Mr. Herrington says. "Those folks are pretty much saying, 'Hey, if I can't have a bit of a hybrid work environment, then I'm probably not going to be interested.'"
Research has shown that most employees prefer some form of flexibility in where they work. An upcoming survey of 9,000 workers by Accenture PLC found 83% of respondents viewed a hybrid workplace as optimal, which means companies need to figure out the new mores of work, and fast.
Sabre Corp. , the travel-technology company that powers major hotel and airline booking systems, has slimmed down to one building from a four-building campus in a suburb of Dallas. Sabre says it plans to bring about 25% of office workers back on site at least three days a week.
The company surveyed its thousands of workers about their preferences and talked extensively with leaders about what worked—and what didn't—over the past year. The result: Roughly 25% of Sabre's 7,500-person staff will likely resume a standard office workweek, says Shawn Williams, Sabre's chief people officer. About 30%, or 2,250 people, will stay remote, and the remaining 45% will come into the office to collaborate with peers one or two days a week.
Sorting out who falls into each category takes some work, Mr. Williams says, adding that who stays home and who comes in—and when—depends on job function and manager approval. Even Sabre executives who had assumed workers would be more engaged in an office setting came to conclude that a flexible approach better suits the new realities of employees, many of whom care for children or elderly parents, or have found a lower cost of living farther from Sabre's headquarters.
"The workforce of the future isn't going to come in to go crank a spreadsheet. You'll crank a spreadsheet at home just fine," Mr. Williams says. "You're coming in to be able to collaborate with your team, work on projects, do brainstorming, be a part of our R&D engine."
Tope Awotona, the founder and CEO of Calendly, an Atlanta-based company that makes scheduling software, says he is hiring in places like Georgia, Florida and Texas, and plans to give people the option to come into an office or not. He is providing staff with memberships to co-working spaces near them, so they don't have to work from their homes if they don't want to.
"We want to be what we call a remote-first company, but not a remote-only company," he says. "We want to eliminate the expectation that anybody has to be in the office. All we care about is that you get your job done from anywhere, you hit your goals and you make yourself available."
Jon Stross, a co-founder of Greenhouse Software Inc., predicts that most companies will find hybrid work difficult to navigate. Several years ago, the recruiting-software provider split some of its engineering teams between a New York office and remote locations.
"It didn't work nearly as well" as when everybody was all remote or working together in the office, he says, adding that distributed workers complained of feeling left out while people who could meet easily in the office or for happy hour appeared to solve problems with each other in person. Greenhouse opted to run teams either fully remote or fully in offices in cities such as New York or San Francisco.
The company also says it is impossible for everybody to be in the same room all the time, so it developed norms for meetings, for example, making sure that in-office colleagues don't have side conversations that those dialing in can't hear, Mr. Stross says.
"There's going to be a bunch of unintended consequences that we'll be grappling with," he says of the new era of hybrid work. "It's going to be a mess."


text:
Senate confirms Kristen Clarke to DOJ despite controversy, One Republican votes in her favor
The Senate confirmed Biden nominee Kristen Clarke Tuesday, making her the Department of Justice's first Black woman to serve as assistant attorney general for civil rights. This comes after she walked back some of her online attacks of Sens. Lisa Murkowski (R-AK) and Joe Manchin (D-WV) and Supreme Court Justice Brett Kavanaugh two weeks ago.
Sen. Susan Collins was the only republican to vote in favor of her confirmation.
Before then-Judge Kavanaugh was nominated, Clarke railed against his nomination, saying he would be "dangerous" on the court. Then, called Murkowski "disgraceful" and claimed Manchin's references to Martin Luther King Jr. were "hollow words" online. Immediately after a news article pointed out her tweets, she set her Twitter account to private.
But now, she's taken it all back and pledged to do better. "I have used my platform as the leader of a national civil rights organization to bring attention to legal and policy issues that I deem important to achieving equal justice for all," Clarke said during her hearing. "In retrospect, I regret the tone I occasionally took. I welcome the opportunity, as President Biden and Judge Garland have emphasized, to turn down the volume and lower the temperature."
You can follow Jenny Goldsberry on Twitter @jennyjournalism
Related Topics:Brett KavanaughDOJJoe ManchinKristen ClarkeLisa Murkowski
The United States Treasury Department has denied Republicans' request for reports and documents which deal with the President's son, Hunter Biden. In a bizarre response, Treasury legislative affairs chief Jonathan Davidson sent a letter to the House Oversight and Accountability Chairman James Comer saying they need more detail as to why the panel its seeking such "highly sensitive information."
Apparently suspicious activity surrounding the President of the United States' son doing business deals, foreign banking and transactions with overseas entities including China and Ukraine is not obvious enough.
Davidson's letter did not acknowledge whether such reports on the Bidens exist, but instructed Comer that "improper disclosure" of such information can undermine the executive branch's "conduct of law enforcement, intelligence, and national security activities."
Comer responded that "this coordinated effort by the Biden Administration to hide information about President Biden and his family's shady business schemes is alarming and raises many questions."
Comer added the panel will continue to request the reports and will use "the power of the gavel to get them if needed."
Bloomberg News reports:
Comer and other Republicans already said they have evidence that finances, credit cards, and bank accounts of Hunter and Joe Biden were commingled if not shared.
And in an interim report released in November, Republicans surmised that the Treasury Department has at least 150 SARs related to financial transactions of Biden family members.
Nonetheless, in his letter to Yellen, Comer explained, "The Committee is investigating President Biden's knowledge of and role in these schemes to assess whether he has compromised our national security at the expense of the American people."
Comer added the committee also "will examine drafting legislation to strengthen federal ethics laws regarding employees and their families."


text:
Q: 'std::bad_typeid' : illegal member initialization: 'exception' is not a base or member I am facing a weird compilation error. I created a static library and am trying to use it in another project. I am getting these errors which I just can't make sense of.
...\concrt.h(4878): error C3861: '__uncaught_exception': identifier not found
...\typeinfo(153): error C2504: 'exception' : base class undefined
...\typeinfo(157): error C2614: 'std::bad_cast' : illegal member initialization: 'exception' is not a base or member
...\typeinfo(174): error C2504: 'exception' : base class undefined
...\typeinfo(178): error C2614: 'std::bad_typeid' : illegal member initialization: 'exception' is not a base or member
...\concrt.h(4878): error C3861: '__uncaught_exception': identifier not found

They happen on files which do not use exceptions though other files in the project have instances of downcasting. Including <exceptions> I have RTTI and exceptions enabled in both projects. I tried disabling them in both projects without success. I even tried enabling parallel code generation as concrt.h is related to concurrency but that didn't change anything. Any idea what could be happening?

redpajama_set_name: RedPajamaStackExchange


text:
Glen Rock Navy officer plays 'Taps' every night
Barb Krebs
Video: Navy officer plays taps.
Every evening the eloquent and haunting sound of what is probably the most recognizable military bugle call echoes across the hills of Glen Rock.
And if you follow the sound, it will lead you to Navy Lt. Joshua Corney, 36, who at the end of each day honors members of the military with the playing of "Taps." — often in full uniform and standing in rigid salute.
Watch a video of Lt. Corney explaining his ritual of honor.
"'Taps' has always stuck out in my mind. It just carries such a great meaning and it brings tears to my eyes every time I play it," Corney said. "When I play Taps it is in remembrance of those that have died and those that have served."
Corney said the call is traditionally played at 2200 hours (10 p.m.) but decided to play it a little earlier, "for the community and everything." Although he plays a recording, he doesn't discount the possibility that some day he may learn to play the trumpet or bugle.
After graduation from Dover High School, Corney enlisted in the Navy, became a sonar tech, served aboard the USS Bunker Hill where he had multiple deployments and completed rigorous training to become a search and rescue swimmer.
"Then 9-11 happened and I had a very different sense about the military," Corney said. "I wanted to further my training and I wanted to serve my country in a different capacity so I became a Master at Arms, which is basically a Navy police officer."
He volunteered to be part of the first naval battalion formed to do combat operations in a war zone and spent 13 months in Iraq.
"That was my first exposure to war, my first real exposure to the loss. I remember sitting on my bed and saying that if I ever made it back alive that I would contribute something, not just to the people that deployed with me. I'd been deployed before, but this was a different place, it was a different demeanor, a different world, and I understood the sacrifice of not only those I was serving with but those who served in other wars," he said.
"For the first time I understood what it was really about and I told myself that if I made it back I would find somewhere peaceful and spend the rest of my life and I would honor those that have given the ultimate sacrifice."
Corney's first deployment to Iraq was 13 months. His next duty station was in Maryland and from there he was deployed to Iraq, Afghanistan and other locations for a period of three years.
Retired Army Col. Richard Shiles, who spent 19 years in the military, lives near Corney and can hear the melancholy melody on the evening breeze.
"Our normal exposure is when it's played in the evening where it signifies the end of the day and a time to rest in peace," he said. "But first and foremost, I think most people see it as a melody of patriotism, of celebration of a life of service, and of sorrow and farewell.
At such times it is very emotional and always makes me want to cry as I have lost so many friends and relatives where it has been played," said Shiles.
"To me personally, at the funeral of my son, SSG James A. Shiles, it was both a recognition and honor of his service as well as the start of healing for his family and to bring closure to very hard and trying time," Shiles added.
As president of the Glen Rock Borough Council, Shiles was instrumental in establishing the town's new Veteran's Memorial Park in honor of those who served.
Corney said the family — wife, Bethany, 27, 4-year-old Olivia, Preston, who is 2 ½, Colton, 1, and 3-month-old twins Hudson and Sophia — chose to return to Glen Rock because the people are nice and there were many military families in the neighborhood.
Corney will continue playing Taps each evening and plans to build a memorial to military veterans where families of those who have served can buy a name plate to be added to the wall.
"We just bought the house and there will be expenses and things we need to do," he said. "But this is something I want to do for those I left behind."
U.S. Army veteran talks about 'the real Memorial Day' at York service
Veteran: Returning troops need help to cope
Vietnam War veteran to deliver York County Memorial Day address


text:
Q: Help verifying the Lindeberg condition
Suppose $X_1, X_2,...$ is a sequence of independent, identically distributed
random variables with $\mathbb{E}[X_n] = 0$ and $\mathbb{E}[X_n^2] = 1$. Find  sequences of constants $a_n$ and $b_n$ such that,
$$ \frac{\left(\sum\limits_{1 \leq i < j \leq n}X_iX_j - a_n\right)}{b_n} $$
converges in distribution and find the limit distribution.

My approach was to try and use the Lindeberg condition. Let $S_n = \sum\limits_{1 \leq i < j \leq n}X_iX_j = \sum\limits_{j=1}^n\sum\limits_{i=1}^{j-1}X_iX_j$. and define, $Y_j = \sum\limits_{i=1}^{j-1}X_iX_j$. Then $\mathbb{E}[Y_j] = 0$ and $\mathbb{E}[Y_j^2] = j-1$. Let $b_n^2 = \sum\limits_{j=1}^n\mathbb{E}[Y_j^2] = \frac{n(n+1)}{2} - n$. To verify the Lindeberg condition, we need to investigate the asymptotic behaviour of,
$$ \frac{1}{b_n^2}\sum\limits_{j=1}^n\mathbb{E}[Y_j^2\mathbb{1}_{\{|Y_j|>\epsilon b_n\}}] \;\;\;\;\; \forall \epsilon > 0 $$
If the above quantity goes to $0$ as $n\rightarrow\infty$, then $S_n/b_n$ will converge in distribution to $N(0,1)$. Since we're not given any other information about $X_1, X_2,...$, can we possibly use this approach? It makes no assumption of boundedness.

A: Hint: $$\sum_{1 \leq i < j \leq n} X_i X_j = \sum_{1 \leq i \leq j \leq n} X_i X_j - \sum_{i=1}^n X_i^2 = \left( \sum_{i=1}^n X_i \right)^2 - \sum_{i=1}^n X_i^2$$
and so
$$\frac{1}{n} \sum_{1 \leq i < j \leq n} X_i X_j  = \left( \frac{1}{\sqrt{n}} \sum_{i=1}^n X_i \right)^2 - \frac{1}{n} \sum_{i=1}^n X_i^2.$$
Use the CLT for the first term and the SLLN for the second.


a brand of synthetic rubber prepared by polymerization of butylene containing little butadiene, particularly useful for inner tubes of automobile tires because of its leakproof qualities.
The stuff smelled like a mixture of spirits of ammonia and butyl mercaptan, but it did the job.
There are also higher alcohols, that is, those having more complex chemical formulas, such as butyl alcohol.
It has the characteristic odour of the flowers, and consists of a mixture of butyl and amyl angelates and valerates.
"And butyl mercaptan; I'm quite aware of that," said the Doctor quickly, to continue the tradition of omniscience.
hydrocarbon radical, 1868, from butyric acid, a product of fermentation found in rancid butter, from Latin butyrum "butter" (see butter (n.)).
The radical C4H9, derived from butane.


text:
COVER STORY CFA dispute may end up burning Victorian Labor electorally
CANBERRA OBSERVED July 2: Independence Day or Groundhog Day?
EDITORIAL Expect shockwaves as Britain votes on EU exit
CLIMATE CHANGE Coral bleaching way overdone by reef saviours
EUTHANASIA Victorian report closer to truth in dissenting voices
FOREIGN AFFAIRS Trump v Clinton race revealing of state of U.S.
SEXUAL POLITICS Transgenderism and the triumph of marketing
EDUCATION Deconstruction and other rot at school
POLITICS AND ECONOMICS Two heretics: Hilaire Belloc and R.H. Tawney
FREE SPEECH From disagreement to discrimination: section 18C
LITERATURE Tolkien, Golding and Hell
SOCIETY New lease on life for freedom machine
MUSIC AND ENTERTAINMENT Talent shows grind down singers, grind out drivel
CINEMA Puppet people pull the plug: Me Before You
BOOK REVIEW HOMOSEXUALITY, MARRIAGE AND SOCIETY
BOOK REVIEW Friendship under fire
Transgenderism and the triumph of marketing
by Mark Regnerus
News Weekly, July 2, 2016
Before the year 2000, no U.S. state recognised same-sex marriage. By 2015, it was legal throughout the U.S. and most of Western Europe. Before 2015 most Americans knew nothing about transgender issues. Within a year these issues were on the front pages of newspapers every day. The pace of change in the sexual revolution is not just rapid. It's accelerating around the world. Why?
Not reason but marketing
Although I'm a scholar familiar with the battles over "what the science says," I'm convinced the credit here belongs to marketing. Social conservatives have been outmanned and outgunned, but perhaps nowhere is this clearer than in messaging about marriage. Now the messaging has shifted directions a few degrees.
Content counts for nothing: the frame is all.
Why do conservatives continue to be so outmaneuvered? It may seem unlikely given the tiny population of persons who self-identify as transgendered. The answer is not to be found in science or in history – that is, in being on the right or wrong side of it – but in the contemporary wedding of marketing in the service of matters of sexuality. The key to shifting sentiments about sexuality is in "framing".
Framing is about the social construction of a phenomenon, and concerns how effectively a matter comes to be perceived by a group of people. Lots of concerns in numerous domains of our lives are affected by framing.
In this particular case, however, bathroom or locker room access and "comfort" for the three in 1000 persons who self-identify as transgender seems to be increasingly framed as a compelling issue that the population at large – and educators everywhere in particular – should care about. And not just as one of many issues people should care about, but rather a uniquely pressing matter that requires solutions now, not after years of reflection, observation, discernment, and even experimentation. This is evidence of successful framing.
While same-sex marriage may seem like a long way away from transgender bathrooms, they aren't in that a successful public relations campaign to promote the former has been utilised to tag (and criticise) opposition to the latter. Hence people who have qualms about any of the many reasonable questions regarding transgender bathroom and locker room access are being lumped in with those (fewer) who dispute the structural alteration to legal marriage in the West. And they don't like it.
But the "framers" hope the tags stick, and that the many Americans who have reasonable concerns about "locker room sex education" will keep their anxieties to themselves, or better yet change their minds. But minds, marketers know, are more quickly changed by compelling narratives and images than by Socratic dialogue.
Social conservatives, meanwhile, have been pretty poor at framing. The 2015 effort to characterise the Houston city council's wide-ranging GLBT nondiscrimination law as a noxious "bathroom bill" was a rare success in framing for those unhappy with the socio-sexual shifts of late. Look at how the cultural left framed it: the bill – which failed in a popular vote – was dubbed the "HERO" bill, which stood for Human Rights Ordinance. It's hard to be against human rights and heroes; language and acronyms have long cost social conservatives plenty.
Moreover, legislators and chambers of commerce have often found themselves paralysed in the face of corporate threats to withdraw business. The Houston "incident", however, seems to have come and gone without economic repercussions. Star power in the form of a beloved pro athlete – former baseball great Lance Berkman – lending his name, voice, and popularity (as well as a sense of traditional masculinity) to the cause helped. Berkman's narrative may have made all the difference. (Current pro athletes would've been fined by their leagues.)
North Carolina legislators will see whether they can replicate Houston's success. It is an unsure thing, but it can be done. Patience, even stalling, typically pays off, since the contemporary media cycle is remarkably short.
Effective framing doesn't just happen. In today's media-saturated world, it costs money. A hidden variable in all the disputes of late is the monumental investment in the framing business by GLBT organisations, whose number and overall access to financial resources dwarfs that of socially conservative organisations that promote marriage and family. Successful efforts to access federal funding, especially in the form of foreign aid, now boost the cultural left's framing efforts with consistent infusions of cash.
Hence framing, and the money to pay to put it to effective use, appear to be key reasons for the swift shift from legal discourse around same-sex marriage to that of transgender kids and bathroom access; and with it a more privileged place for non-heterosexuality and its expressions in the American (and eventually foreign) educational systems.
Without effective framing, we would not be seeing the continued rapid pace of change in the domain of sex and sexuality. Dominance in the domain of narrative, far more than in science, has dogged conservatives. It has been a feat not of reason but of marketing.
Mark Regnerus is an associate professor of sociology at the University of Texas at Austin and a senior fellow at the Austin Institute for the Study of Family and Culture. This article first appeared on Mercatornet.com on June 3, 2016.


text:
Q: What is a hexagon? Having a slight parenting anxiety attack and I hate teaching my son something incorrect.
Wiktionary tells me that a Hexagon is a polygon with $6$ sides and $6$ angles.
Why the $6$ angle requirement?  This has me confused.
Would the shape below be also considered a hexagon?

A: The diagram you drew is considered a hexagon but often the way mathematics grows is when an intuitive/familiar concept evolves to get insight into a broader collection of ideas. This has been especially true for geometry. The critical feature for a polygon is that straight line segments join up the the points involved. Early mentions of polygons implicitly assumed that one was dealing with convex polygons, one had distinct points, one had no three of the points on a straight line or no three consecutive points on a straight line, that different points could not sit on top of each other, and that the points all were located in a single plane. Now geometers often investigate situations where some of these conditions are loosened and as a result many exciting new geometrical phenomena have come to light.
For a fascinating look at this type of issue for polyhedra instead of polygons look at the wonderful paper of Branko Grünbaum, "Are your polyhedra the same as my polyhedra?"
http://www.math.washington.edu/~grunbaum/Your%20polyhedra-my%20polyhedra.pdf
It deals with the many different ways that the concept of a polyhedron can be defined.

A: Yes, it would still be considered a hexagon. The reason why we require "$6$ angles" is probably just because you don't want the $6$ lines to cross and create "more than $6$ angles". The hexagons you are probably thinking of (the one with all the angles and sides equal) would be regular hexagons.
Hope that helps.

A: Check your kid's geometry syllabus: it may be he's being taught simple, basic geometry and thus n-gons are usually considered to be convex, i.e.: the interior (and perimeter, too) of the n-gon must contain the whole line segment connecting any two points in the interior. Under this agreement what you drew wouldn't qualify as hexagon or, perhaps more accurately, convex hexagon.

A: Yes, It is Considered as a Hexagon. There is a difference between an Irregular Hexagon and a Regular Hexagon. A regular hexagon has sides that are segments of straight lines that are all equal in length. The interior angles are all equal with 120 degrees. An irregular hexagon has sides that may be of different lengths. It also follows that the interior angles are not all equal. Some interior angles may be greater than 180 degrees, but the sum of all interior angles is 720 degrees. Hope this gives u an idea about it.

A: Yes. It also has six angles, but one of them is greater than $180^{\circ}$.

A: A  hexagon is a simple closed polygon $P$ (presumably in the plane) with $6$ sides. Simple means that the sides are arranged in cyclic order, that two subsequent sides have exactly one point, called a vertex, in common, and that otherwise the sides don't intersect. Maybe you want to include the condition that subsequent sides should not be parallel.  Jordan's curve theorem then guarantees that $P$ has a well defined interior (an "open hexagon") and an exterior which extends to infinity.
The polygon in your figure is a hexagon according to this definition. If you want to exclude it you would have to  explicitly require that the considered hexagon be convex. (Maybe you can use this opportunity to make your son familiar with the notion of convexity $\ldots$)

A: (This was way too long for a comment on @Joseph's answer.)
Branko Grünbaum was my graduate advisor, so I couldn't help but to adopt a very broad view of polygons and polyhedra. To me,

A "hexagon" consists of six not-necessarily-distinct points (the "vertices"), connected, in order, by six possibly-zero-length line segments (the "edges").

(The "edges" don't even really need to be straight line segments, but can be curves. For purposes of this discussion, my edges are straight.) The definition encompasses familiar convex and non-convex figures, ones whose edges meet or cross at points other than their vertices (although the crossing-points aren't considered new vertices), ones that multiply-trace a simpler figure (say, by going around a triangle twice), the one in which all vertices coincide and you can't see any edges (I call this the "dot"), and cases where the vertices aren't even confined to a plane.
Here's a figure —featuring "15-gons"— from my note, "Spectral Realizations of Graphs", that examines highly-symmetric versions of these broadly-defined polygons and polyhedra. Each picture contains a polygon defined by 15 vertices joined by 15 edges, but the edges are allowed to cross and the vertices are allowed to coincide. (The polygon in (a) is the lonely black "dot" at the far right of the ghostly circle of gray reference points.)

(The math of the note may be a little intimidating, but the bulk of the content comprises zillions of pictures that everyone can enjoy.)
An advantage of this broader (and yet not broadest!) view is that it allows every member of the "hexagon" family to be deformed into any other by simply moving vertices around, not having to worry about edges crossing or collapsing. This freedom leads to some remarkable mathematics involving "adding" figures.
Below is a figure from my note "An Extension of a Theorem of Barlotti" that deals with this notion of addition. The figure indicates how vertices from the regular pentagons combine to give a vertex of the "flatter" pentagon.

One needs the very broad view of polygons here, because the definition of "addition" applies vertex-by-vertex, with no concern for how results of each step relate to one another; it's possible in general, for instance, to jiggle the pentagons being added in such a way that the resulting pentagon has crossed or collapsed edges.
Ultimately, one can combine the results of my two notes and declare, for instance, that

Any hexagon —as weirdly deformed (but straight-edged), self-intersecting, edge-collapsed, or non-planar as you like— is the "sum" of perfectly wonderful regular, planar hexagons.

A downside of this broad view is that one loses connection with some of basic facts (for instance, "the measures of angles of a hexagon sum to 720 degrees") that hold only for the most-elementary figures that one first encounters in Geometry, but as @Joseph mentions, "[O]ften the way mathematics grows is when an intuitive/familiar concept evolves to get insight into a broader collection of ideas".
What I learned from Branko Grünbaum is that

Once you think you completely understand something (like the notion of "polygon"), a generalization will turn up that shows you that you're just getting started. This principle applies even when you've already taken this principle into account, which is to say: You're never done.

It's not a quote, but I think it summarizes his philosophy pretty well.
So, even if this stuff is well beyond the scope of your son's current coursework, it can be helpful to have some awareness that there's much more to mathematics than what's presented in any one textbook ... if only to encourage students who get bored in class to find ways of tweaking the concepts in ways that make them interesting. ("But what if some of my hexagon's vertices lifted out of the page?") This really is how mathematics often advances.

A: A closed polygon with 6 sides. Total Interior angles = (n-2) x 180 where n is the number of sides. One exterior angle = 360/n

A: For polygon the closing sides from start to end point after the desired number reached is said to be a polygon. Specific term come into action only when the condition like angle and length are taken into account....
say for example, i am dreaming to draw 6 sides closed (still its too a polygon with 6 sides)
I am drawing a circle, its total angle is 360.
Now i am planning to divide its total angle into 6 parts(sectors) I have made the imaginary lines for the angles inscribed.   360/6 = 60 degree
now i am joining the lines starting from center of  circle to the circumference of it until i'm touching it.
now i am marking the points in which formed on the circumference of the circle due to the line joining from the center of circle to the circumference due to the angle i marked (60 degree)
Now join the marked points each other remove the circle you will get a perfect HEXAGON

A: The above shown image is of irregular hexagon with uneven angles and edges.
Below shown image is for regular hexagon with even edges and angles Image.
so you can divide hexagons into 2 subcategories.
1. even and 2. uneven.
So, in even its by default all edges and angles are similar.
and under uneven all angles and edges can be same or not.
All other hexagons come under uneven hexagons.

A: It has six sides and six non-intersecting lines connecting them.  Its interior is connected.  Therefore, it's a hexagon.